Coverage report for DECHash (D:\Projekte\DECGitMaster\Source\DECHash.asm86.inc).

Generated at 05.09.2021 11:38:02 by DelphiCodeCoverage - an open source tool for Delphi Code Coverage.

Statistics for D:\Projekte\DECGitMaster\Source\DECHash.asm86.inc

Number of lines covered28308
Number of lines with code gen28308
Line coverage100%


1
{*****************************************************************************
2
  The DEC team (see file NOTICE.txt) licenses this file
3
  to you under the Apache License, Version 2.0 (the
4
  "License"); you may not use this file except in compliance
5
  with the License. A copy of this licence is found in the root directory
6
  of this project in the file LICENCE.txt or alternatively at
7
8
    http://www.apache.org/licenses/LICENSE-2.0
9
10
  Unless required by applicable law or agreed to in writing,
11
  software distributed under the License is distributed on an
12
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
13
  KIND, either express or implied.  See the License for the
14
  specific language governing permissions and limitations
15
  under the License.
16
*****************************************************************************}
17
18
{
19
  x86 Assembler optimized hash functions
20
}
21
22
{$IFDEF INCLUDED}
23
24
{$IFDEF THash_MD2_asm}
25
procedure THash_MD2.DoTransform(Buffer: PUInt32Array);
26
asm
27
                push    ebx
28
                push    esi
29
                push    edi
30
                push    ebp
31
32
                lea  esi, [eax].THash_MD2.FDigest
33
34
                // copying incoming buffer into work buffer
35
                mov  eax, [edx]
36
                mov  ecx, [edx + 4]
37
                mov  ebx, [edx + 8]
38
                mov  edi, [edx + 12]
39
                mov  [esi + 16], eax
40
                mov  [esi + 16 + 4], ecx
41
                mov  [esi + 16 + 8], ebx
42
                mov  [esi + 16 + 12], edi
43
44
                // recalculating message checksum
45
                //  loop unrolled to 4 iterations,
46
                // combined with
47
                //  xor first 16 bytes with second 16 and move res to third
48
                mov   ecx, dword ptr [esi + 60]
49
                mov   edi, -16
50
                shr   ecx, 24
51
52
            @checksumloop:
53
54
                mov  edx, dword ptr [esi + edi + 16]       // digest
55
                mov  ebp, dword ptr [esi + edi + 16 + 16]  // source data
56
                mov  ebx, dword ptr [esi + edi + 16 + 48]  // checksum
57
58
                xor  ecx, ebp
59
                xor  edx, ebp
60
                and  ecx, 0ffh
61
                xor  eax, eax
62
                mov  ecx, dword ptr MD2_PiSubst[ecx*4]
63
                shr  ebp, 8
64
                xor  ecx, ebx
65
                mov  dword ptr [esi + edi + 16 + 32], edx
66
                and  ecx, 0ffh
67
                shr  ebx, 8
68
                or   eax, ecx
69
                shl  eax, 24
70
71
                xor  ecx, ebp
72
                and  ecx, 0ffh
73
                shr  ebp, 8
74
                mov  ecx, dword ptr MD2_PiSubst[ecx*4]
75
                xor  ecx, ebx
76
                and  ecx, 0ffh
77
                shr  ebx, 8
78
                or   eax, ecx
79
                ror  eax, 8
80
81
                xor  ecx, ebp
82
                and  ecx, 0ffh
83
                shr  ebp, 8
84
                mov  ecx, dword ptr MD2_PiSubst[ecx*4]
85
                xor  ecx, ebx
86
                and  ecx, 0ffh
87
                shr  ebx, 8
88
                or   eax, ecx
89
                ror  eax, 8
90
91
                xor  ecx, ebp
92
                and  ecx, 0ffh
93
                mov  ecx, dword ptr MD2_PiSubst[ecx*4]
94
                xor  ecx, ebx
95
                or   eax, ecx
96
                ror  eax, 8
97
98
                mov  dword ptr [esi + edi + 16 + 48], eax
99
100
                add  edi, 4
101
                jnz  @checksumloop
102
103
                // do 18 rounds of transformation
104
                //  internal loop unrolled
105
106
                lea  edi, MD2_PiSubst  // MD2 permutation array pointer
107
                xor  ecx, ecx       // T variable
108
                xor  ebp, ebp       // external 18 rounds loop
109
                mov  ebx, 0ffh      // mask constant
110
111
            @roundsloop:
112
113
                // part 1
114
                mov  edx, dword ptr [esi]
115
                mov  ecx, dword ptr [edi + ecx*4]
116
                xor  eax, eax
117
                xor  ecx, edx
118
                shr  edx, 8
119
                and  ecx, ebx
120
                or   eax, ecx
121
122
                mov  ecx, dword ptr [edi + ecx*4]
123
                shl  eax, 24
124
                xor  ecx, edx
125
                shr  edx, 8
126
                and  ecx, ebx
127
                or   eax, ecx
128
129
                mov  ecx, dword ptr [edi + ecx*4]
130
                ror  eax, 8
131
                xor  ecx, edx
132
                shr  edx, 8
133
                and  ecx, ebx
134
                or   eax, ecx
135
136
                mov  ecx, dword ptr [edi + ecx*4]
137
                ror  eax, 8
138
                xor  ecx, edx
139
                or   eax, ecx
140
                ror  eax, 8
141
                mov  dword ptr [esi], eax
142
143
                // part 2
144
                mov  edx, dword ptr [esi + 4]
145
                mov  ecx, dword ptr [edi + ecx*4]
146
                xor  eax, eax
147
                xor  ecx, edx
148
                shr  edx, 8
149
                and  ecx, ebx
150
                or   eax, ecx
151
152
                mov  ecx, dword ptr [edi + ecx*4]
153
                shl  eax, 24
154
                xor  ecx, edx
155
                shr  edx, 8
156
                and  ecx, ebx
157
                or   eax, ecx
158
159
                mov  ecx, dword ptr [edi + ecx*4]
160
                ror  eax, 8
161
                xor  ecx, edx
162
                shr  edx, 8
163
                and  ecx, ebx
164
                or   eax, ecx
165
166
                mov  ecx, dword ptr [edi + ecx*4]
167
                ror  eax, 8
168
                xor  ecx, edx
169
                or   eax, ecx
170
                ror  eax, 8
171
                mov  dword ptr [esi + 4], eax
172
173
                // part 3
174
                mov  edx, dword ptr [esi + 8]
175
                mov  ecx, dword ptr [edi + ecx*4]
176
                xor  eax, eax
177
                xor  ecx, edx
178
                shr  edx, 8
179
                and  ecx, ebx
180
                or   eax, ecx
181
182
                mov  ecx, dword ptr [edi + ecx*4]
183
                shl  eax, 24
184
                xor  ecx, edx
185
                shr  edx, 8
186
                and  ecx, ebx
187
                or   eax, ecx
188
189
                mov  ecx, dword ptr [edi + ecx*4]
190
                ror  eax, 8
191
                xor  ecx, edx
192
                shr  edx, 8
193
                and  ecx, ebx
194
                or   eax, ecx
195
196
                mov  ecx, dword ptr [edi + ecx*4]
197
                ror  eax, 8
198
                xor  ecx, edx
199
                or   eax, ecx
200
                ror  eax, 8
201
                mov  dword ptr [esi + 8], eax
202
203
                // part 4
204
                mov  edx, dword ptr [esi + 12]
205
                mov  ecx, dword ptr [edi + ecx*4]
206
                xor  eax, eax
207
                xor  ecx, edx
208
                shr  edx, 8
209
                and  ecx, ebx
210
                or   eax, ecx
211
212
                mov  ecx, dword ptr [edi + ecx*4]
213
                shl  eax, 24
214
                xor  ecx, edx
215
                shr  edx, 8
216
                and  ecx, ebx
217
                or   eax, ecx
218
219
                mov  ecx, dword ptr [edi + ecx*4]
220
                ror  eax, 8
221
                xor  ecx, edx
222
                shr  edx, 8
223
                and  ecx, ebx
224
                or   eax, ecx
225
226
                mov  ecx, dword ptr [edi + ecx*4]
227
                ror  eax, 8
228
                xor  ecx, edx
229
                or   eax, ecx
230
                ror  eax, 8
231
                mov  dword ptr [esi + 12], eax
232
233
                // part 5
234
                mov  edx, dword ptr [esi + 16]
235
                mov  ecx, dword ptr [edi + ecx*4]
236
                xor  eax, eax
237
                xor  ecx, edx
238
                shr  edx, 8
239
                and  ecx, ebx
240
                or   eax, ecx
241
242
                mov  ecx, dword ptr [edi + ecx*4]
243
                shl  eax, 24
244
                xor  ecx, edx
245
                shr  edx, 8
246
                and  ecx, ebx
247
                or   eax, ecx
248
249
                mov  ecx, dword ptr [edi + ecx*4]
250
                ror  eax, 8
251
                xor  ecx, edx
252
                shr  edx, 8
253
                and  ecx, ebx
254
                or   eax, ecx
255
256
                mov  ecx, dword ptr [edi + ecx*4]
257
                ror  eax, 8
258
                xor  ecx, edx
259
                or   eax, ecx
260
                ror  eax, 8
261
                mov  dword ptr [esi + 16], eax
262
263
                // part 6
264
                mov  edx, dword ptr [esi + 20]
265
                mov  ecx, dword ptr [edi + ecx*4]
266
                xor  eax, eax
267
                xor  ecx, edx
268
                shr  edx, 8
269
                and  ecx, ebx
270
                or   eax, ecx
271
272
                mov  ecx, dword ptr [edi + ecx*4]
273
                shl  eax, 24
274
                xor  ecx, edx
275
                shr  edx, 8
276
                and  ecx, ebx
277
                or   eax, ecx
278
279
                mov  ecx, dword ptr [edi + ecx*4]
280
                ror  eax, 8
281
                xor  ecx, edx
282
                shr  edx, 8
283
                and  ecx, ebx
284
                or   eax, ecx
285
286
                mov  ecx, dword ptr [edi + ecx*4]
287
                ror  eax, 8
288
                xor  ecx, edx
289
                or   eax, ecx
290
                ror  eax, 8
291
                mov  dword ptr [esi + 20], eax
292
293
                // part 7
294
                mov  edx, dword ptr [esi + 24]
295
                mov  ecx, dword ptr [edi + ecx*4]
296
                xor  eax, eax
297
                xor  ecx, edx
298
                shr  edx, 8
299
                and  ecx, ebx
300
                or   eax, ecx
301
302
                mov  ecx, dword ptr [edi + ecx*4]
303
                shl  eax, 24
304
                xor  ecx, edx
305
                shr  edx, 8
306
                and  ecx, ebx
307
                or   eax, ecx
308
309
                mov  ecx, dword ptr [edi + ecx*4]
310
                ror  eax, 8
311
                xor  ecx, edx
312
                shr  edx, 8
313
                and  ecx, ebx
314
                or   eax, ecx
315
316
                mov  ecx, dword ptr [edi + ecx*4]
317
                ror  eax, 8
318
                xor  ecx, edx
319
                or   eax, ecx
320
                ror  eax, 8
321
                mov  dword ptr [esi + 24], eax
322
323
                // part 8
324
                mov  edx, dword ptr [esi + 28]
325
                mov  ecx, dword ptr [edi + ecx*4]
326
                xor  eax, eax
327
                xor  ecx, edx
328
                shr  edx, 8
329
                and  ecx, ebx
330
                or   eax, ecx
331
332
                mov  ecx, dword ptr [edi + ecx*4]
333
                shl  eax, 24
334
                xor  ecx, edx
335
                shr  edx, 8
336
                and  ecx, ebx
337
                or   eax, ecx
338
339
                mov  ecx, dword ptr [edi + ecx*4]
340
                ror  eax, 8
341
                xor  ecx, edx
342
                shr  edx, 8
343
                and  ecx, ebx
344
                or   eax, ecx
345
346
                mov  ecx, dword ptr [edi + ecx*4]
347
                ror  eax, 8
348
                xor  ecx, edx
349
                or   eax, ecx
350
                ror  eax, 8
351
                mov  dword ptr [esi + 28], eax
352
353
                // part 9
354
                mov  edx, dword ptr [esi + 32]
355
                mov  ecx, dword ptr [edi + ecx*4]
356
                xor  eax, eax
357
                xor  ecx, edx
358
                shr  edx, 8
359
                and  ecx, ebx
360
                or   eax, ecx
361
362
                mov  ecx, dword ptr [edi + ecx*4]
363
                shl  eax, 24
364
                xor  ecx, edx
365
                shr  edx, 8
366
                and  ecx, ebx
367
                or   eax, ecx
368
369
                mov  ecx, dword ptr [edi + ecx*4]
370
                ror  eax, 8
371
                xor  ecx, edx
372
                shr  edx, 8
373
                and  ecx, ebx
374
                or   eax, ecx
375
376
                mov  ecx, dword ptr [edi + ecx*4]
377
                ror  eax, 8
378
                xor  ecx, edx
379
                or   eax, ecx
380
                ror  eax, 8
381
                mov  dword ptr [esi + 32], eax
382
383
                // part 10
384
                mov  edx, dword ptr [esi + 36]
385
                mov  ecx, dword ptr [edi + ecx*4]
386
                xor  eax, eax
387
                xor  ecx, edx
388
                shr  edx, 8
389
                and  ecx, ebx
390
                or   eax, ecx
391
392
                mov  ecx, dword ptr [edi + ecx*4]
393
                shl  eax, 24
394
                xor  ecx, edx
395
                shr  edx, 8
396
                and  ecx, ebx
397
                or   eax, ecx
398
399
                mov  ecx, dword ptr [edi + ecx*4]
400
                ror  eax, 8
401
                xor  ecx, edx
402
                shr  edx, 8
403
                and  ecx, ebx
404
                or   eax, ecx
405
406
                mov  ecx, dword ptr [edi + ecx*4]
407
                ror  eax, 8
408
                xor  ecx, edx
409
                or   eax, ecx
410
                ror  eax, 8
411
                mov  dword ptr [esi + 36], eax
412
413
                // part 11
414
                mov  edx, dword ptr [esi + 40]
415
                mov  ecx, dword ptr [edi + ecx*4]
416
                xor  eax, eax
417
                xor  ecx, edx
418
                shr  edx, 8
419
                and  ecx, ebx
420
                or   eax, ecx
421
422
                mov  ecx, dword ptr [edi + ecx*4]
423
                shl  eax, 24
424
                xor  ecx, edx
425
                shr  edx, 8
426
                and  ecx, ebx
427
                or   eax, ecx
428
429
                mov  ecx, dword ptr [edi + ecx*4]
430
                ror  eax, 8
431
                xor  ecx, edx
432
                shr  edx, 8
433
                and  ecx, ebx
434
                or   eax, ecx
435
436
                mov  ecx, dword ptr [edi + ecx*4]
437
                ror  eax, 8
438
                xor  ecx, edx
439
                or   eax, ecx
440
                ror  eax, 8
441
                mov  dword ptr [esi + 40], eax
442
443
                // part 12
444
                mov  edx, dword ptr [esi + 44]
445
                mov  ecx, dword ptr [edi + ecx*4]
446
                xor  eax, eax
447
                xor  ecx, edx
448
                shr  edx, 8
449
                and  ecx, ebx
450
                or   eax, ecx
451
452
                mov  ecx, dword ptr [edi + ecx*4]
453
                shl  eax, 24
454
                xor  ecx, edx
455
                shr  edx, 8
456
                and  ecx, ebx
457
                or   eax, ecx
458
459
                mov  ecx, dword ptr [edi + ecx*4]
460
                ror  eax, 8
461
                xor  ecx, edx
462
                shr  edx, 8
463
                and  ecx, ebx
464
                or   eax, ecx
465
466
                mov  ecx, dword ptr [edi + ecx*4]
467
                ror  eax, 8
468
                xor  ecx, edx
469
                or   eax, ecx
470
                ror  eax, 8
471
                mov  dword ptr [esi + 44], eax
472
473
                add  ecx, ebp
474
                inc  ebp
475
                and  ecx, ebx
476
                cmp  ebp, 18
477
                jnz  @roundsloop
478
479
                pop  ebp
480
                pop  edi
481
                pop  esi
482
                pop  ebx
483
end;
484
{$ENDIF}
485
486
{$IFDEF THash_MD4_asm}
487
procedure THash_MD4.DoTransform(Buffer: PUInt32Array);
488
asm
489
                push    ebx
490
                push    esi
491
                push    edi
492
                lea     edi, [eax].THash_MD4.FDigest  // let edi points to A,B ..
493
                mov     esi, edx                      // let esi points to Buffer
494
                push    ebp
495
496
                mov     eax, [edi]
497
                mov     ebx, [edi+4]
498
                push    edi
499
                mov     ecx, [edi+8]
500
                mov     edx, [edi+0Ch]
501
                mov     edi, ecx
502
                xor     edi, edx
503
                and     edi, ebx
504
                mov     ebp, [esi]
505
                xor     edi, edx
506
                add     eax, ebp
507
                mov     ebp, ebx
508
                add     eax, edi
509
                rol     eax, 3
510
                xor     ebp, ecx
511
                mov     edi, [esi+4]
512
                and     ebp, eax
513
                add     edx, edi
514
                xor     ebp, ecx
515
                mov     edi, eax
516
                add     edx, ebp
517
                xor     edi, ebx
518
                rol     edx, 7
519
                and     edi, edx
520
                mov     ebp, [esi+8]
521
                xor     edi, ebx
522
                add     ecx, ebp
523
                mov     ebp, edx
524
                add     ecx, edi
525
                rol     ecx, 0Bh
526
                xor     ebp, eax
527
                mov     edi, [esi+0Ch]
528
                and     ebp, ecx
529
                add     ebx, edi
530
                xor     ebp, eax
531
                mov     edi, ecx
532
                add     ebx, ebp
533
                xor     edi, edx
534
                ror     ebx, 0Dh
535
                and     edi, ebx
536
                mov     ebp, [esi+10h]
537
                xor     edi, edx
538
                add     eax, ebp
539
                mov     ebp, ebx
540
                add     eax, edi
541
                rol     eax, 3
542
                xor     ebp, ecx
543
                mov     edi, [esi+14h]
544
                and     ebp, eax
545
                add     edx, edi
546
                xor     ebp, ecx
547
                mov     edi, eax
548
                add     edx, ebp
549
                xor     edi, ebx
550
                rol     edx, 7
551
                and     edi, edx
552
                mov     ebp, [esi+18h]
553
                xor     edi, ebx
554
                add     ecx, ebp
555
                mov     ebp, edx
556
                add     ecx, edi
557
                rol     ecx, 0Bh
558
                xor     ebp, eax
559
                mov     edi, [esi+1Ch]
560
                and     ebp, ecx
561
                add     ebx, edi
562
                xor     ebp, eax
563
                mov     edi, ecx
564
                add     ebx, ebp
565
                xor     edi, edx
566
                ror     ebx, 0Dh
567
                and     edi, ebx
568
                mov     ebp, [esi+20h]
569
                xor     edi, edx
570
                add     eax, ebp
571
                mov     ebp, ebx
572
                add     eax, edi
573
                rol     eax, 3
574
                xor     ebp, ecx
575
                mov     edi, [esi+24h]
576
                and     ebp, eax
577
                add     edx, edi
578
                xor     ebp, ecx
579
                mov     edi, eax
580
                add     edx, ebp
581
                xor     edi, ebx
582
                rol     edx, 7
583
                and     edi, edx
584
                mov     ebp, [esi+28h]
585
                xor     edi, ebx
586
                add     ecx, ebp
587
                mov     ebp, edx
588
                add     ecx, edi
589
                rol     ecx, 0Bh
590
                xor     ebp, eax
591
                mov     edi, [esi+2Ch]
592
                and     ebp, ecx
593
                add     ebx, edi
594
                xor     ebp, eax
595
                mov     edi, ecx
596
                add     ebx, ebp
597
                xor     edi, edx
598
                ror     ebx, 0Dh
599
                and     edi, ebx
600
                mov     ebp, [esi+30h]
601
                xor     edi, edx
602
                add     eax, ebp
603
                mov     ebp, ebx
604
                add     eax, edi
605
                rol     eax, 3
606
                xor     ebp, ecx
607
                mov     edi, [esi+34h]
608
                and     ebp, eax
609
                add     edx, edi
610
                xor     ebp, ecx
611
                mov     edi, eax
612
                add     edx, ebp
613
                xor     edi, ebx
614
                rol     edx, 7
615
                and     edi, edx
616
                mov     ebp, [esi+38h]
617
                xor     edi, ebx
618
                add     ecx, ebp
619
                mov     ebp, edx
620
                add     ecx, edi
621
                rol     ecx, 0Bh
622
                xor     ebp, eax
623
                mov     edi, [esi+3Ch]
624
                and     ebp, ecx
625
                add     ebx, edi
626
                xor     ebp, eax
627
                mov     edi, edx
628
                add     ebx, ebp
629
                mov     ebp, edx
630
                ror     ebx, 0Dh
631
                or      edi, ecx
632
                and     ebp, ecx
633
                and     edi, ebx
634
                add     eax, [esi]
635
                or      edi, ebp
636
                mov     ebp, ecx
637
                lea     eax, [eax+edi+5A827999h]
638
                mov     edi, ecx
639
                rol     eax, 3
640
                or      edi, ebx
641
                and     ebp, ebx
642
                and     edi, eax
643
                add     edx, [esi+10h]
644
                or      edi, ebp
645
                mov     ebp, ebx
646
                lea     edx, [edx+edi+5A827999h]
647
                mov     edi, ebx
648
                rol     edx, 5
649
                or      edi, eax
650
                and     ebp, eax
651
                and     edi, edx
652
                add     ecx, [esi+20h]
653
                or      edi, ebp
654
                mov     ebp, eax
655
                lea     ecx, [ecx+edi+5A827999h]
656
                mov     edi, eax
657
                rol     ecx, 9
658
                or      edi, edx
659
                and     ebp, edx
660
                and     edi, ecx
661
                add     ebx, [esi+30h]
662
                or      edi, ebp
663
                mov     ebp, edx
664
                lea     ebx, [ebx+edi+5A827999h]
665
                mov     edi, edx
666
                rol     ebx, 0Dh
667
                or      edi, ecx
668
                and     ebp, ecx
669
                and     edi, ebx
670
                add     eax, [esi+4]
671
                or      edi, ebp
672
                mov     ebp, ecx
673
                lea     eax, [eax+edi+5A827999h]
674
                mov     edi, ecx
675
                rol     eax, 3
676
                or      edi, ebx
677
                and     ebp, ebx
678
                and     edi, eax
679
                add     edx, [esi+14h]
680
                or      edi, ebp
681
                mov     ebp, ebx
682
                lea     edx, [edx+edi+5A827999h]
683
                mov     edi, ebx
684
                rol     edx, 5
685
                or      edi, eax
686
                and     ebp, eax
687
                and     edi, edx
688
                add     ecx, [esi+24h]
689
                or      edi, ebp
690
                mov     ebp, eax
691
                lea     ecx, [ecx+edi+5A827999h]
692
                mov     edi, eax
693
                rol     ecx, 9
694
                or      edi, edx
695
                and     ebp, edx
696
                and     edi, ecx
697
                add     ebx, [esi+34h]
698
                or      edi, ebp
699
                mov     ebp, edx
700
                lea     ebx, [ebx+edi+5A827999h]
701
                mov     edi, edx
702
                rol     ebx, 0Dh
703
                or      edi, ecx
704
                and     ebp, ecx
705
                and     edi, ebx
706
                add     eax, [esi+8]
707
                or      edi, ebp
708
                mov     ebp, ecx
709
                lea     eax, [eax+edi+5A827999h]
710
                mov     edi, ecx
711
                rol     eax, 3
712
                or      edi, ebx
713
                and     ebp, ebx
714
                and     edi, eax
715
                add     edx, [esi+18h]
716
                or      edi, ebp
717
                mov     ebp, ebx
718
                lea     edx, [edx+edi+5A827999h]
719
                mov     edi, ebx
720
                rol     edx, 5
721
                or      edi, eax
722
                and     ebp, eax
723
                and     edi, edx
724
                add     ecx, [esi+28h]
725
                or      edi, ebp
726
                mov     ebp, eax
727
                lea     ecx, [ecx+edi+5A827999h]
728
                mov     edi, eax
729
                rol     ecx, 9
730
                or      edi, edx
731
                and     ebp, edx
732
                and     edi, ecx
733
                add     ebx, [esi+38h]
734
                or      edi, ebp
735
                mov     ebp, edx
736
                lea     ebx, [ebx+edi+5A827999h]
737
                mov     edi, edx
738
                rol     ebx, 0Dh
739
                or      edi, ecx
740
                and     ebp, ecx
741
                and     edi, ebx
742
                add     eax, [esi+0Ch]
743
                or      edi, ebp
744
                mov     ebp, ecx
745
                lea     eax, [eax+edi+5A827999h]
746
                mov     edi, ecx
747
                rol     eax, 3
748
                or      edi, ebx
749
                and     ebp, ebx
750
                and     edi, eax
751
                add     edx, [esi+1Ch]
752
                or      edi, ebp
753
                mov     ebp, ebx
754
                lea     edx, [edx+edi+5A827999h]
755
                mov     edi, ebx
756
                rol     edx, 5
757
                or      edi, eax
758
                and     ebp, eax
759
                and     edi, edx
760
                add     ecx, [esi+2Ch]
761
                or      edi, ebp
762
                mov     ebp, eax
763
                lea     ecx, [ecx+edi+5A827999h]
764
                mov     edi, eax
765
                rol     ecx, 9
766
                or      edi, edx
767
                and     ebp, edx
768
                and     edi, ecx
769
                add     ebx, [esi+3Ch]
770
                or      edi, ebp
771
                mov     ebp, edx
772
                lea     ebx, [ebx+edi+5A827999h]
773
                mov     edi, edx
774
                rol     ebx, 0Dh
775
                xor     edi, ecx
776
                mov     ebp, [esi]
777
                xor     edi, ebx
778
                add     eax, ebp
779
                lea     eax, [eax+edi+6ED9EBA1h]
780
                mov     ebp, ecx
781
                rol     eax, 3
782
                xor     ebp, ebx
783
                mov     edi, [esi+20h]
784
                xor     ebp, eax
785
                add     edx, edi
786
                lea     edx, [edx+ebp+6ED9EBA1h]
787
                mov     edi, ebx
788
                rol     edx, 9
789
                xor     edi, eax
790
                mov     ebp, [esi+10h]
791
                xor     edi, edx
792
                add     ecx, ebp
793
                lea     ecx, [ecx+edi+6ED9EBA1h]
794
                mov     ebp, eax
795
                rol     ecx, 0Bh
796
                xor     ebp, edx
797
                mov     edi, [esi+30h]
798
                xor     ebp, ecx
799
                add     ebx, edi
800
                lea     ebx, [ebx+ebp+6ED9EBA1h]
801
                mov     edi, edx
802
                rol     ebx, 0Fh
803
                xor     edi, ecx
804
                mov     ebp, [esi+8]
805
                xor     edi, ebx
806
                add     eax, ebp
807
                lea     eax, [eax+edi+6ED9EBA1h]
808
                mov     ebp, ecx
809
                rol     eax, 3
810
                xor     ebp, ebx
811
                mov     edi, [esi+28h]
812
                xor     ebp, eax
813
                add     edx, edi
814
                lea     edx, [edx+ebp+6ED9EBA1h]
815
                mov     edi, ebx
816
                rol     edx, 9
817
                xor     edi, eax
818
                mov     ebp, [esi+18h]
819
                xor     edi, edx
820
                add     ecx, ebp
821
                lea     ecx, [ecx+edi+6ED9EBA1h]
822
                mov     ebp, eax
823
                rol     ecx, 0Bh
824
                xor     ebp, edx
825
                mov     edi, [esi+38h]
826
                xor     ebp, ecx
827
                add     ebx, edi
828
                lea     ebx, [ebx+ebp+6ED9EBA1h]
829
                mov     edi, edx
830
                rol     ebx, 0Fh
831
                xor     edi, ecx
832
                mov     ebp, [esi+4]
833
                xor     edi, ebx
834
                add     eax, ebp
835
                lea     eax, [eax+edi+6ED9EBA1h]
836
                mov     ebp, ecx
837
                rol     eax, 3
838
                xor     ebp, ebx
839
                mov     edi, [esi+24h]
840
                xor     ebp, eax
841
                add     edx, edi
842
                lea     edx, [edx+ebp+6ED9EBA1h]
843
                mov     edi, ebx
844
                rol     edx, 9
845
                xor     edi, eax
846
                mov     ebp, [esi+14h]
847
                xor     edi, edx
848
                add     ecx, ebp
849
                lea     ecx, [ecx+edi+6ED9EBA1h]
850
                mov     ebp, eax
851
                rol     ecx, 0Bh
852
                xor     ebp, edx
853
                mov     edi, [esi+34h]
854
                xor     ebp, ecx
855
                add     ebx, edi
856
                lea     ebx, [ebx+ebp+6ED9EBA1h]
857
                mov     edi, edx
858
                rol     ebx, 0Fh
859
                xor     edi, ecx
860
                mov     ebp, [esi+0Ch]
861
                xor     edi, ebx
862
                add     eax, ebp
863
                lea     eax, [eax+edi+6ED9EBA1h]
864
                mov     ebp, ecx
865
                rol     eax, 3
866
                xor     ebp, ebx
867
                mov     edi, [esi+2Ch]
868
                xor     ebp, eax
869
                add     edx, edi
870
                lea     edx, [edx+ebp+6ED9EBA1h]
871
                mov     edi, ebx
872
                rol     edx, 9
873
                xor     edi, eax
874
                mov     ebp, [esi+1Ch]
875
                xor     edi, edx
876
                add     ecx, ebp
877
                lea     ecx, [ecx+edi+6ED9EBA1h]
878
                mov     ebp, eax
879
                rol     ecx, 0Bh
880
                xor     ebp, edx
881
                mov     edi, [esi+3Ch]
882
                xor     ebp, ecx
883
                add     ebx, edi
884
                lea     ebx, [ebx+ebp+6ED9EBA1h]
885
                rol     ebx, 0Fh
886
                pop     edi
887
                add     [edi], eax
888
                add     [edi+4], ebx
889
                add     [edi+8], ecx
890
                add     [edi+0Ch], edx
891
892
                pop     ebp
893
                pop     edi
894
                pop     esi
895
                pop     ebx
896
end;
897
{$ENDIF}
898
899
{$IFDEF THash_MD5_asm}
900
procedure THash_MD5.DoTransform(Buffer: PUInt32Array);
901
asm
902
                push    ebx
903
                push    esi
904
                push    edi
905
                lea     edi, [eax].THash_MD5.FDigest   // let edi points to A,B ..
906
                mov     esi, edx                       // let esi points to Buffer
907
                push    ebp
908
                mov     eax, [edi]
909
                mov     ebx, [edi+4]
910
                push    edi
911
                mov     ecx, [edi+8]
912
                mov     edx, [edi+0Ch]
913
                mov     edi, ecx
914
                mov     ebp, [esi]
915
                xor     edi, edx
916
                lea     eax, [eax+ebp-28955B88h]
917
                and     edi, ebx
918
                mov     ebp, [esi+4]
919
                xor     edi, edx
920
                add     eax, edi
921
                mov     edi, ebx
922
                rol     eax, 7
923
                xor     edi, ecx
924
                add     eax, ebx
925
                lea     edx, [edx+ebp-173848AAh]
926
                and     edi, eax
927
                mov     ebp, [esi+8]
928
                xor     edi, ecx
929
                add     edx, edi
930
                mov     edi, eax
931
                rol     edx, 0Ch
932
                xor     edi, ebx
933
                add     edx, eax
934
                lea     ecx, [ecx+ebp+242070DBh]
935
                and     edi, edx
936
                mov     ebp, [esi+0Ch]
937
                xor     edi, ebx
938
                add     ecx, edi
939
                mov     edi, edx
940
                ror     ecx, 0Fh
941
                xor     edi, eax
942
                add     ecx, edx
943
                lea     ebx, [ebx+ebp-3E423112h]
944
                and     edi, ecx
945
                mov     ebp, [esi+10h]
946
                xor     edi, eax
947
                add     ebx, edi
948
                mov     edi, ecx
949
                ror     ebx, 0Ah
950
                xor     edi, edx
951
                add     ebx, ecx
952
                lea     eax, [eax+ebp-0A83F051h]
953
                and     edi, ebx
954
                mov     ebp, [esi+14h]
955
                xor     edi, edx
956
                add     eax, edi
957
                mov     edi, ebx
958
                rol     eax, 7
959
                xor     edi, ecx
960
                add     eax, ebx
961
                lea     edx, [edx+ebp+4787C62Ah]
962
                and     edi, eax
963
                mov     ebp, [esi+18h]
964
                xor     edi, ecx
965
                add     edx, edi
966
                mov     edi, eax
967
                rol     edx, 0Ch
968
                xor     edi, ebx
969
                add     edx, eax
970
                lea     ecx, [ecx+ebp-57CFB9EDh]
971
                and     edi, edx
972
                mov     ebp, [esi+1Ch]
973
                xor     edi, ebx
974
                add     ecx, edi
975
                mov     edi, edx
976
                ror     ecx, 0Fh
977
                xor     edi, eax
978
                add     ecx, edx
979
                lea     ebx, [ebx+ebp-2B96AFFh]
980
                and     edi, ecx
981
                mov     ebp, [esi+20h]
982
                xor     edi, eax
983
                add     ebx, edi
984
                mov     edi, ecx
985
                ror     ebx, 0Ah
986
                xor     edi, edx
987
                add     ebx, ecx
988
                lea     eax, [eax+ebp+698098D8h]
989
                and     edi, ebx
990
                mov     ebp, [esi+24h]
991
                xor     edi, edx
992
                add     eax, edi
993
                mov     edi, ebx
994
                rol     eax, 7
995
                xor     edi, ecx
996
                add     eax, ebx
997
                lea     edx, [edx+ebp-74BB0851h]
998
                and     edi, eax
999
                mov     ebp, [esi+28h]
1000
                xor     edi, ecx
1001
                add     edx, edi
1002
                mov     edi, eax
1003
                rol     edx, 0Ch
1004
                xor     edi, ebx
1005
                add     edx, eax
1006
                lea     ecx, [ecx+ebp-0A44Fh]
1007
                and     edi, edx
1008
                mov     ebp, [esi+2Ch]
1009
                xor     edi, ebx
1010
                add     ecx, edi
1011
                mov     edi, edx
1012
                ror     ecx, 0Fh
1013
                xor     edi, eax
1014
                add     ecx, edx
1015
                lea     ebx, [ebx+ebp-76A32842h]
1016
                and     edi, ecx
1017
                mov     ebp, [esi+30h]
1018
                xor     edi, eax
1019
                add     ebx, edi
1020
                mov     edi, ecx
1021
                ror     ebx, 0Ah
1022
                xor     edi, edx
1023
                add     ebx, ecx
1024
                lea     eax, [eax+ebp+6B901122h]
1025
                and     edi, ebx
1026
                mov     ebp, [esi+34h]
1027
                xor     edi, edx
1028
                add     eax, edi
1029
                mov     edi, ebx
1030
                rol     eax, 7
1031
                xor     edi, ecx
1032
                add     eax, ebx
1033
                lea     edx, [edx+ebp-2678E6Dh]
1034
                and     edi, eax
1035
                mov     ebp, [esi+38h]
1036
                xor     edi, ecx
1037
                add     edx, edi
1038
                mov     edi, eax
1039
                rol     edx, 0Ch
1040
                xor     edi, ebx
1041
                add     edx, eax
1042
                lea     ecx, [ecx+ebp-5986BC72h]
1043
                and     edi, edx
1044
                mov     ebp, [esi+3Ch]
1045
                xor     edi, ebx
1046
                add     ecx, edi
1047
                mov     edi, edx
1048
                ror     ecx, 0Fh
1049
                xor     edi, eax
1050
                add     ecx, edx
1051
                lea     ebx, [ebx+ebp+49B40821h]
1052
                and     edi, ecx
1053
                mov     ebp, [esi+4]
1054
                xor     edi, eax
1055
                add     ebx, edi
1056
                mov     edi, ecx
1057
                ror     ebx, 0Ah
1058
                xor     edi, edx
1059
                add     ebx, ecx
1060
                mov     edi, ecx
1061
                xor     edi, ebx
1062
                lea     eax, [eax+ebp-9E1DA9Eh]
1063
                and     edi, edx
1064
                mov     ebp, [esi+18h]
1065
                xor     edi, ecx
1066
                add     eax, edi
1067
                mov     edi, ebx
1068
                rol     eax, 5
1069
                add     eax, ebx
1070
                xor     edi, eax
1071
                lea     edx, [edx+ebp-3FBF4CC0h]
1072
                and     edi, ecx
1073
                mov     ebp, [esi+2Ch]
1074
                xor     edi, ebx
1075
                add     edx, edi
1076
                mov     edi, eax
1077
                rol     edx, 9
1078
                add     edx, eax
1079
                xor     edi, edx
1080
                lea     ecx, [ecx+ebp+265E5A51h]
1081
                and     edi, ebx
1082
                mov     ebp, [esi]
1083
                xor     edi, eax
1084
                add     ecx, edi
1085
                mov     edi, edx
1086
                rol     ecx, 0Eh
1087
                add     ecx, edx
1088
                xor     edi, ecx
1089
                lea     ebx, [ebx+ebp-16493856h]
1090
                and     edi, eax
1091
                mov     ebp, [esi+14h]
1092
                xor     edi, edx
1093
                add     ebx, edi
1094
                mov     edi, ecx
1095
                ror     ebx, 0Ch
1096
                add     ebx, ecx
1097
                xor     edi, ebx
1098
                lea     eax, [eax+ebp-29D0EFA3h]
1099
                and     edi, edx
1100
                mov     ebp, [esi+28h]
1101
                xor     edi, ecx
1102
                add     eax, edi
1103
                mov     edi, ebx
1104
                rol     eax, 5
1105
                add     eax, ebx
1106
                xor     edi, eax
1107
                lea     edx, [edx+ebp+2441453h]
1108
                and     edi, ecx
1109
                mov     ebp, [esi+3Ch]
1110
                xor     edi, ebx
1111
                add     edx, edi
1112
                mov     edi, eax
1113
                rol     edx, 9
1114
                add     edx, eax
1115
                xor     edi, edx
1116
                lea     ecx, [ecx+ebp-275E197Fh]
1117
                and     edi, ebx
1118
                mov     ebp, [esi+10h]
1119
                xor     edi, eax
1120
                add     ecx, edi
1121
                mov     edi, edx
1122
                rol     ecx, 0Eh
1123
                add     ecx, edx
1124
                xor     edi, ecx
1125
                lea     ebx, [ebx+ebp-182C0438h]
1126
                and     edi, eax
1127
                mov     ebp, [esi+24h]
1128
                xor     edi, edx
1129
                add     ebx, edi
1130
                mov     edi, ecx
1131
                ror     ebx, 0Ch
1132
                add     ebx, ecx
1133
                xor     edi, ebx
1134
                lea     eax, [eax+ebp+21E1CDE6h]
1135
                and     edi, edx
1136
                mov     ebp, [esi+38h]
1137
                xor     edi, ecx
1138
                add     eax, edi
1139
                mov     edi, ebx
1140
                rol     eax, 5
1141
                add     eax, ebx
1142
                xor     edi, eax
1143
                lea     edx, [edx+ebp-3CC8F82Ah]
1144
                and     edi, ecx
1145
                mov     ebp, [esi+0Ch]
1146
                xor     edi, ebx
1147
                add     edx, edi
1148
                mov     edi, eax
1149
                rol     edx, 9
1150
                add     edx, eax
1151
                xor     edi, edx
1152
                lea     ecx, [ecx+ebp-0B2AF279h]
1153
                and     edi, ebx
1154
                mov     ebp, [esi+20h]
1155
                xor     edi, eax
1156
                add     ecx, edi
1157
                mov     edi, edx
1158
                rol     ecx, 0Eh
1159
                add     ecx, edx
1160
                xor     edi, ecx
1161
                lea     ebx, [ebx+ebp+455A14EDh]
1162
                and     edi, eax
1163
                mov     ebp, [esi+34h]
1164
                xor     edi, edx
1165
                add     ebx, edi
1166
                mov     edi, ecx
1167
                ror     ebx, 0Ch
1168
                add     ebx, ecx
1169
                xor     edi, ebx
1170
                lea     eax, [eax+ebp-561C16FBh]
1171
                and     edi, edx
1172
                mov     ebp, [esi+8]
1173
                xor     edi, ecx
1174
                add     eax, edi
1175
                mov     edi, ebx
1176
                rol     eax, 5
1177
                add     eax, ebx
1178
                xor     edi, eax
1179
                lea     edx, [edx+ebp-3105C08h]
1180
                and     edi, ecx
1181
                mov     ebp, [esi+1Ch]
1182
                xor     edi, ebx
1183
                add     edx, edi
1184
                mov     edi, eax
1185
                rol     edx, 9
1186
                add     edx, eax
1187
                xor     edi, edx
1188
                lea     ecx, [ecx+ebp+676F02D9h]
1189
                and     edi, ebx
1190
                mov     ebp, [esi+30h]
1191
                xor     edi, eax
1192
                add     ecx, edi
1193
                mov     edi, edx
1194
                rol     ecx, 0Eh
1195
                add     ecx, edx
1196
                xor     edi, ecx
1197
                lea     ebx, [ebx+ebp-72D5B376h]
1198
                and     edi, eax
1199
                mov     ebp, [esi+14h]
1200
                xor     edi, edx
1201
                add     ebx, edi
1202
                mov     edi, ecx
1203
                ror     ebx, 0Ch
1204
                add     ebx, ecx
1205
                xor     edi, edx
1206
                lea     eax, [eax+ebp-5C6BEh]
1207
                xor     edi, ebx
1208
                mov     ebp, [esi+20h]
1209
                add     eax, edi
1210
                rol     eax, 4
1211
                lea     edx, [edx+ebp-788E097Fh]
1212
                mov     edi, ebx
1213
                add     eax, ebx
1214
                xor     edi, ecx
1215
                mov     ebp, [esi+2Ch]
1216
                xor     edi, eax
1217
                add     edx, edi
1218
                mov     edi, eax
1219
                rol     edx, 0Bh
1220
                add     edx, eax
1221
                xor     edi, ebx
1222
                lea     ecx, [ecx+ebp+6D9D6122h]
1223
                xor     edi, edx
1224
                mov     ebp, [esi+38h]
1225
                add     ecx, edi
1226
                rol     ecx, 10h
1227
                lea     ebx, [ebx+ebp-21AC7F4h]
1228
                mov     edi, edx
1229
                add     ecx, edx
1230
                xor     edi, eax
1231
                mov     ebp, [esi+4]
1232
                xor     edi, ecx
1233
                add     ebx, edi
1234
                mov     edi, ecx
1235
                ror     ebx, 9
1236
                add     ebx, ecx
1237
                xor     edi, edx
1238
                lea     eax, [eax+ebp-5B4115BCh]
1239
                xor     edi, ebx
1240
                mov     ebp, [esi+10h]
1241
                add     eax, edi
1242
                rol     eax, 4
1243
                lea     edx, [edx+ebp+4BDECFA9h]
1244
                mov     edi, ebx
1245
                add     eax, ebx
1246
                xor     edi, ecx
1247
                mov     ebp, [esi+1Ch]
1248
                xor     edi, eax
1249
                add     edx, edi
1250
                mov     edi, eax
1251
                rol     edx, 0Bh
1252
                add     edx, eax
1253
                xor     edi, ebx
1254
                lea     ecx, [ecx+ebp-944B4A0h]
1255
                xor     edi, edx
1256
                mov     ebp, [esi+28h]
1257
                add     ecx, edi
1258
                rol     ecx, 10h
1259
                lea     ebx, [ebx+ebp-41404390h]
1260
                mov     edi, edx
1261
                add     ecx, edx
1262
                xor     edi, eax
1263
                mov     ebp, [esi+34h]
1264
                xor     edi, ecx
1265
                add     ebx, edi
1266
                mov     edi, ecx
1267
                ror     ebx, 9
1268
                add     ebx, ecx
1269
                xor     edi, edx
1270
                lea     eax, [eax+ebp+289B7EC6h]
1271
                xor     edi, ebx
1272
                mov     ebp, [esi]
1273
                add     eax, edi
1274
                rol     eax, 4
1275
                lea     edx, [edx+ebp-155ED806h]
1276
                mov     edi, ebx
1277
                add     eax, ebx
1278
                xor     edi, ecx
1279
                mov     ebp, [esi+0Ch]
1280
                xor     edi, eax
1281
                add     edx, edi
1282
                mov     edi, eax
1283
                rol     edx, 0Bh
1284
                add     edx, eax
1285
                xor     edi, ebx
1286
                lea     ecx, [ecx+ebp-2B10CF7Bh]
1287
                xor     edi, edx
1288
                mov     ebp, [esi+18h]
1289
                add     ecx, edi
1290
                rol     ecx, 10h
1291
                lea     ebx, [ebx+ebp+4881D05h]
1292
                mov     edi, edx
1293
                add     ecx, edx
1294
                xor     edi, eax
1295
                mov     ebp, [esi+24h]
1296
                xor     edi, ecx
1297
                add     ebx, edi
1298
                mov     edi, ecx
1299
                ror     ebx, 9
1300
                add     ebx, ecx
1301
                xor     edi, edx
1302
                lea     eax, [eax+ebp-262B2FC7h]
1303
                xor     edi, ebx
1304
                mov     ebp, [esi+30h]
1305
                add     eax, edi
1306
                rol     eax, 4
1307
                lea     edx, [edx+ebp-1924661Bh]
1308
                mov     edi, ebx
1309
                add     eax, ebx
1310
                xor     edi, ecx
1311
                mov     ebp, [esi+3Ch]
1312
                xor     edi, eax
1313
                add     edx, edi
1314
                mov     edi, eax
1315
                rol     edx, 0Bh
1316
                add     edx, eax
1317
                xor     edi, ebx
1318
                lea     ecx, [ecx+ebp+1FA27CF8h]
1319
                xor     edi, edx
1320
                mov     ebp, [esi+8]
1321
                add     ecx, edi
1322
                rol     ecx, 10h
1323
                lea     ebx, [ebx+ebp-3B53A99Bh]
1324
                mov     edi, edx
1325
                add     ecx, edx
1326
                xor     edi, eax
1327
                mov     ebp, [esi]
1328
                xor     edi, ecx
1329
                add     ebx, edi
1330
                mov     edi, edx
1331
                ror     ebx, 9
1332
                add     ebx, ecx
1333
                xor     edi, 0FFFFFFFFh
1334
                lea     eax, [eax+ebp-0BD6DDBCh]
1335
                or      edi, ebx
1336
                mov     ebp, [esi+1Ch]
1337
                xor     edi, ecx
1338
                add     eax, edi
1339
                mov     edi, ecx
1340
                rol     eax, 6
1341
                add     eax, ebx
1342
                xor     edi, 0FFFFFFFFh
1343
                lea     edx, [edx+ebp+432AFF97h]
1344
                or      edi, eax
1345
                mov     ebp, [esi+38h]
1346
                xor     edi, ebx
1347
                add     edx, edi
1348
                mov     edi, ebx
1349
                rol     edx, 0Ah
1350
                add     edx, eax
1351
                xor     edi, 0FFFFFFFFh
1352
                lea     ecx, [ecx+ebp-546BDC59h]
1353
                or      edi, edx
1354
                mov     ebp, [esi+14h]
1355
                xor     edi, eax
1356
                add     ecx, edi
1357
                mov     edi, eax
1358
                rol     ecx, 0Fh
1359
                add     ecx, edx
1360
                xor     edi, 0FFFFFFFFh
1361
                lea     ebx, [ebx+ebp-36C5FC7h]
1362
                or      edi, ecx
1363
                mov     ebp, [esi+30h]
1364
                xor     edi, edx
1365
                add     ebx, edi
1366
                mov     edi, edx
1367
                ror     ebx, 0Bh
1368
                add     ebx, ecx
1369
                xor     edi, 0FFFFFFFFh
1370
                lea     eax, [eax+ebp+655B59C3h]
1371
                or      edi, ebx
1372
                mov     ebp, [esi+0Ch]
1373
                xor     edi, ecx
1374
                add     eax, edi
1375
                mov     edi, ecx
1376
                rol     eax, 6
1377
                add     eax, ebx
1378
                xor     edi, 0FFFFFFFFh
1379
                lea     edx, [edx+ebp-70F3336Eh]
1380
                or      edi, eax
1381
                mov     ebp, [esi+28h]
1382
                xor     edi, ebx
1383
                add     edx, edi
1384
                mov     edi, ebx
1385
                rol     edx, 0Ah
1386
                add     edx, eax
1387
                xor     edi, 0FFFFFFFFh
1388
                lea     ecx, [ecx+ebp-100B83h]
1389
                or      edi, edx
1390
                mov     ebp, [esi+4]
1391
                xor     edi, eax
1392
                add     ecx, edi
1393
                mov     edi, eax
1394
                rol     ecx, 0Fh
1395
                add     ecx, edx
1396
                xor     edi, 0FFFFFFFFh
1397
                lea     ebx, [ebx+ebp-7A7BA22Fh]
1398
                or      edi, ecx
1399
                mov     ebp, [esi+20h]
1400
                xor     edi, edx
1401
                add     ebx, edi
1402
                mov     edi, edx
1403
                ror     ebx, 0Bh
1404
                add     ebx, ecx
1405
                xor     edi, 0FFFFFFFFh
1406
                lea     eax, [eax+ebp+6FA87E4Fh]
1407
                or      edi, ebx
1408
                mov     ebp, [esi+3Ch]
1409
                xor     edi, ecx
1410
                add     eax, edi
1411
                mov     edi, ecx
1412
                rol     eax, 6
1413
                add     eax, ebx
1414
                xor     edi, 0FFFFFFFFh
1415
                lea     edx, [edx+ebp-1D31920h]
1416
                or      edi, eax
1417
                mov     ebp, [esi+18h]
1418
                xor     edi, ebx
1419
                add     edx, edi
1420
                mov     edi, ebx
1421
                rol     edx, 0Ah
1422
                add     edx, eax
1423
                xor     edi, 0FFFFFFFFh
1424
                lea     ecx, [ecx+ebp-5CFEBCECh]
1425
                or      edi, edx
1426
                mov     ebp, [esi+34h]
1427
                xor     edi, eax
1428
                add     ecx, edi
1429
                mov     edi, eax
1430
                rol     ecx, 0Fh
1431
                add     ecx, edx
1432
                xor     edi, 0FFFFFFFFh
1433
                lea     ebx, [ebx+ebp+4E0811A1h]
1434
                or      edi, ecx
1435
                mov     ebp, [esi+10h]
1436
                xor     edi, edx
1437
                add     ebx, edi
1438
                mov     edi, edx
1439
                ror     ebx, 0Bh
1440
                add     ebx, ecx
1441
                xor     edi, 0FFFFFFFFh
1442
                lea     eax, [eax+ebp-8AC817Eh]
1443
                or      edi, ebx
1444
                mov     ebp, [esi+2Ch]
1445
                xor     edi, ecx
1446
                add     eax, edi
1447
                mov     edi, ecx
1448
                rol     eax, 6
1449
                add     eax, ebx
1450
                xor     edi, 0FFFFFFFFh
1451
                lea     edx, [edx+ebp-42C50DCBh]
1452
                or      edi, eax
1453
                mov     ebp, [esi+8]
1454
                xor     edi, ebx
1455
                add     edx, edi
1456
                mov     edi, ebx
1457
                rol     edx, 0Ah
1458
                add     edx, eax
1459
                xor     edi, 0FFFFFFFFh
1460
                lea     ecx, [ecx+ebp+2AD7D2BBh]
1461
                or      edi, edx
1462
                mov     ebp, [esi+24h]
1463
                xor     edi, eax
1464
                add     ecx, edi
1465
                mov     edi, eax
1466
                rol     ecx, 0Fh
1467
                add     ecx, edx
1468
                xor     edi, 0FFFFFFFFh
1469
                lea     ebx, [ebx+ebp-14792C6Fh]
1470
                or      edi, ecx
1471
                xor     edi, edx
1472
                add     ebx, edi
1473
                ror     ebx, 0Bh
1474
                add     ebx, ecx
1475
                pop     edi
1476
                add     [edi], eax
1477
                add     [edi+4], ebx
1478
                add     [edi+8], ecx
1479
                add     [edi+0Ch], edx
1480
1481
                pop     ebp
1482
                pop     edi
1483
                pop     esi
1484
                pop     ebx
1485
end;
1486
{$ENDIF}
1487
1488
{$IFDEF THash_RipeMD128_asm}
1489
procedure THash_RipeMD128.DoTransform(Buffer: PUInt32Array);
1490
asm
1491
                push    ebx
1492
                push    esi
1493
                push    edi
1494
                lea     edi, [eax].THash_RipeMD128.FDigest
1495
                mov     esi, edx
1496
                push    ebp
1497
1498
                mov     eax, [edi]
1499
                mov     ebx, [edi+4]
1500
                push    edi
1501
                mov     ecx, [edi+8]
1502
                mov     edx, [edi+0Ch]
1503
                add     esp, 0FFFFFFF0h
1504
                mov     edi, edx
1505
                xor     edi, ecx
1506
                mov     ebp, [esi]
1507
                xor     edi, ebx
1508
                add     eax, ebp
1509
                add     eax, edi
1510
                mov     edi, ecx
1511
                rol     eax, 0Bh
1512
                xor     edi, ebx
1513
                mov     ebp, [esi+4]
1514
                xor     edi, eax
1515
                add     edx, ebp
1516
                add     edx, edi
1517
                mov     edi, ebx
1518
                rol     edx, 0Eh
1519
                xor     edi, eax
1520
                mov     ebp, [esi+8]
1521
                xor     edi, edx
1522
                add     ecx, ebp
1523
                add     ecx, edi
1524
                mov     edi, eax
1525
                rol     ecx, 0Fh
1526
                xor     edi, edx
1527
                mov     ebp, [esi+0Ch]
1528
                xor     edi, ecx
1529
                add     ebx, ebp
1530
                add     ebx, edi
1531
                mov     edi, edx
1532
                rol     ebx, 0Ch
1533
                xor     edi, ecx
1534
                mov     ebp, [esi+10h]
1535
                xor     edi, ebx
1536
                add     eax, ebp
1537
                add     eax, edi
1538
                mov     edi, ecx
1539
                rol     eax, 5
1540
                xor     edi, ebx
1541
                mov     ebp, [esi+14h]
1542
                xor     edi, eax
1543
                add     edx, ebp
1544
                add     edx, edi
1545
                mov     edi, ebx
1546
                rol     edx, 8
1547
                xor     edi, eax
1548
                mov     ebp, [esi+18h]
1549
                xor     edi, edx
1550
                add     ecx, ebp
1551
                add     ecx, edi
1552
                mov     edi, eax
1553
                rol     ecx, 7
1554
                xor     edi, edx
1555
                mov     ebp, [esi+1Ch]
1556
                xor     edi, ecx
1557
                add     ebx, ebp
1558
                add     ebx, edi
1559
                mov     edi, edx
1560
                rol     ebx, 9
1561
                xor     edi, ecx
1562
                mov     ebp, [esi+20h]
1563
                xor     edi, ebx
1564
                add     eax, ebp
1565
                add     eax, edi
1566
                mov     edi, ecx
1567
                rol     eax, 0Bh
1568
                xor     edi, ebx
1569
                mov     ebp, [esi+24h]
1570
                xor     edi, eax
1571
                add     edx, ebp
1572
                add     edx, edi
1573
                mov     edi, ebx
1574
                rol     edx, 0Dh
1575
                xor     edi, eax
1576
                mov     ebp, [esi+28h]
1577
                xor     edi, edx
1578
                add     ecx, ebp
1579
                add     ecx, edi
1580
                mov     edi, eax
1581
                rol     ecx, 0Eh
1582
                xor     edi, edx
1583
                mov     ebp, [esi+2Ch]
1584
                xor     edi, ecx
1585
                add     ebx, ebp
1586
                add     ebx, edi
1587
                mov     edi, edx
1588
                rol     ebx, 0Fh
1589
                xor     edi, ecx
1590
                mov     ebp, [esi+30h]
1591
                xor     edi, ebx
1592
                add     eax, ebp
1593
                add     eax, edi
1594
                mov     edi, ecx
1595
                rol     eax, 6
1596
                xor     edi, ebx
1597
                mov     ebp, [esi+34h]
1598
                xor     edi, eax
1599
                add     edx, ebp
1600
                add     edx, edi
1601
                mov     edi, ebx
1602
                rol     edx, 7
1603
                xor     edi, eax
1604
                mov     ebp, [esi+38h]
1605
                xor     edi, edx
1606
                add     ecx, ebp
1607
                add     ecx, edi
1608
                mov     edi, eax
1609
                rol     ecx, 9
1610
                xor     edi, edx
1611
                mov     ebp, [esi+3Ch]
1612
                xor     edi, ecx
1613
                add     ebx, ebp
1614
                add     ebx, edi
1615
                rol     ebx, 8
1616
                mov     ebp, [esi+1Ch]
1617
                mov     edi, ecx
1618
                xor     edi, edx
1619
                lea     eax, [eax+ebp+5A827999h]
1620
                and     edi, ebx
1621
                mov     ebp, ebx
1622
                xor     edi, edx
1623
                xor     ebp, ecx
1624
                add     eax, edi
1625
                mov     edi, [esi+10h]
1626
                rol     eax, 7
1627
                and     ebp, eax
1628
                lea     edx, [edx+edi+5A827999h]
1629
                xor     ebp, ecx
1630
                mov     edi, eax
1631
                add     edx, ebp
1632
                mov     ebp, [esi+34h]
1633
                rol     edx, 6
1634
                xor     edi, ebx
1635
                lea     ecx, [ecx+ebp+5A827999h]
1636
                and     edi, edx
1637
                mov     ebp, edx
1638
                xor     edi, ebx
1639
                xor     ebp, eax
1640
                add     ecx, edi
1641
                mov     edi, [esi+4]
1642
                rol     ecx, 8
1643
                and     ebp, ecx
1644
                lea     ebx, [ebx+edi+5A827999h]
1645
                xor     ebp, eax
1646
                mov     edi, ecx
1647
                add     ebx, ebp
1648
                mov     ebp, [esi+28h]
1649
                rol     ebx, 0Dh
1650
                xor     edi, edx
1651
                lea     eax, [eax+ebp+5A827999h]
1652
                and     edi, ebx
1653
                mov     ebp, ebx
1654
                xor     edi, edx
1655
                xor     ebp, ecx
1656
                add     eax, edi
1657
                mov     edi, [esi+18h]
1658
                rol     eax, 0Bh
1659
                and     ebp, eax
1660
                lea     edx, [edx+edi+5A827999h]
1661
                xor     ebp, ecx
1662
                mov     edi, eax
1663
                add     edx, ebp
1664
                mov     ebp, [esi+3Ch]
1665
                rol     edx, 9
1666
                xor     edi, ebx
1667
                lea     ecx, [ecx+ebp+5A827999h]
1668
                and     edi, edx
1669
                mov     ebp, edx
1670
                xor     edi, ebx
1671
                xor     ebp, eax
1672
                add     ecx, edi
1673
                mov     edi, [esi+0Ch]
1674
                rol     ecx, 7
1675
                and     ebp, ecx
1676
                lea     ebx, [ebx+edi+5A827999h]
1677
                xor     ebp, eax
1678
                mov     edi, ecx
1679
                add     ebx, ebp
1680
                mov     ebp, [esi+30h]
1681
                rol     ebx, 0Fh
1682
                xor     edi, edx
1683
                lea     eax, [eax+ebp+5A827999h]
1684
                and     edi, ebx
1685
                mov     ebp, ebx
1686
                xor     edi, edx
1687
                xor     ebp, ecx
1688
                add     eax, edi
1689
                mov     edi, [esi]
1690
                rol     eax, 7
1691
                and     ebp, eax
1692
                lea     edx, [edx+edi+5A827999h]
1693
                xor     ebp, ecx
1694
                mov     edi, eax
1695
                add     edx, ebp
1696
                mov     ebp, [esi+24h]
1697
                rol     edx, 0Ch
1698
                xor     edi, ebx
1699
                lea     ecx, [ecx+ebp+5A827999h]
1700
                and     edi, edx
1701
                mov     ebp, edx
1702
                xor     edi, ebx
1703
                xor     ebp, eax
1704
                add     ecx, edi
1705
                mov     edi, [esi+14h]
1706
                rol     ecx, 0Fh
1707
                and     ebp, ecx
1708
                lea     ebx, [ebx+edi+5A827999h]
1709
                xor     ebp, eax
1710
                mov     edi, ecx
1711
                add     ebx, ebp
1712
                mov     ebp, [esi+8]
1713
                rol     ebx, 9
1714
                xor     edi, edx
1715
                lea     eax, [eax+ebp+5A827999h]
1716
                and     edi, ebx
1717
                mov     ebp, ebx
1718
                xor     edi, edx
1719
                xor     ebp, ecx
1720
                add     eax, edi
1721
                mov     edi, [esi+38h]
1722
                rol     eax, 0Bh
1723
                and     ebp, eax
1724
                lea     edx, [edx+edi+5A827999h]
1725
                xor     ebp, ecx
1726
                mov     edi, eax
1727
                add     edx, ebp
1728
                mov     ebp, [esi+2Ch]
1729
                rol     edx, 7
1730
                xor     edi, ebx
1731
                lea     ecx, [ecx+ebp+5A827999h]
1732
                and     edi, edx
1733
                mov     ebp, edx
1734
                xor     edi, ebx
1735
                xor     ebp, eax
1736
                add     ecx, edi
1737
                mov     edi, [esi+20h]
1738
                rol     ecx, 0Dh
1739
                and     ebp, ecx
1740
                lea     ebx, [ebx+edi+5A827999h]
1741
                xor     ebp, eax
1742
                add     ebx, ebp
1743
                rol     ebx, 0Ch
1744
                mov     edi, ecx
1745
                mov     ebp, [esi+0Ch]
1746
                xor     edi, 0FFFFFFFFh
1747
                lea     eax, [eax+ebp+6ED9EBA1h]
1748
                or      edi, ebx
1749
                mov     ebp, ebx
1750
                xor     edi, edx
1751
                xor     ebp, 0FFFFFFFFh
1752
                add     eax, edi
1753
                mov     edi, [esi+28h]
1754
                rol     eax, 0Bh
1755
                or      ebp, eax
1756
                lea     edx, [edx+edi+6ED9EBA1h]
1757
                xor     ebp, ecx
1758
                mov     edi, eax
1759
                add     edx, ebp
1760
                mov     ebp, [esi+38h]
1761
                rol     edx, 0Dh
1762
                xor     edi, 0FFFFFFFFh
1763
                lea     ecx, [ecx+ebp+6ED9EBA1h]
1764
                or      edi, edx
1765
                mov     ebp, edx
1766
                xor     edi, ebx
1767
                xor     ebp, 0FFFFFFFFh
1768
                add     ecx, edi
1769
                mov     edi, [esi+10h]
1770
                rol     ecx, 6
1771
                or      ebp, ecx
1772
                lea     ebx, [ebx+edi+6ED9EBA1h]
1773
                xor     ebp, eax
1774
                mov     edi, ecx
1775
                add     ebx, ebp
1776
                mov     ebp, [esi+24h]
1777
                rol     ebx, 7
1778
                xor     edi, 0FFFFFFFFh
1779
                lea     eax, [eax+ebp+6ED9EBA1h]
1780
                or      edi, ebx
1781
                mov     ebp, ebx
1782
                xor     edi, edx
1783
                xor     ebp, 0FFFFFFFFh
1784
                add     eax, edi
1785
                mov     edi, [esi+3Ch]
1786
                rol     eax, 0Eh
1787
                or      ebp, eax
1788
                lea     edx, [edx+edi+6ED9EBA1h]
1789
                xor     ebp, ecx
1790
                mov     edi, eax
1791
                add     edx, ebp
1792
                mov     ebp, [esi+20h]
1793
                rol     edx, 9
1794
                xor     edi, 0FFFFFFFFh
1795
                lea     ecx, [ecx+ebp+6ED9EBA1h]
1796
                or      edi, edx
1797
                mov     ebp, edx
1798
                xor     edi, ebx
1799
                xor     ebp, 0FFFFFFFFh
1800
                add     ecx, edi
1801
                mov     edi, [esi+4]
1802
                rol     ecx, 0Dh
1803
                or      ebp, ecx
1804
                lea     ebx, [ebx+edi+6ED9EBA1h]
1805
                xor     ebp, eax
1806
                mov     edi, ecx
1807
                add     ebx, ebp
1808
                mov     ebp, [esi+8]
1809
                rol     ebx, 0Fh
1810
                xor     edi, 0FFFFFFFFh
1811
                lea     eax, [eax+ebp+6ED9EBA1h]
1812
                or      edi, ebx
1813
                mov     ebp, ebx
1814
                xor     edi, edx
1815
                xor     ebp, 0FFFFFFFFh
1816
                add     eax, edi
1817
                mov     edi, [esi+1Ch]
1818
                rol     eax, 0Eh
1819
                or      ebp, eax
1820
                lea     edx, [edx+edi+6ED9EBA1h]
1821
                xor     ebp, ecx
1822
                mov     edi, eax
1823
                add     edx, ebp
1824
                mov     ebp, [esi]
1825
                rol     edx, 8
1826
                xor     edi, 0FFFFFFFFh
1827
                lea     ecx, [ecx+ebp+6ED9EBA1h]
1828
                or      edi, edx
1829
                mov     ebp, edx
1830
                xor     edi, ebx
1831
                xor     ebp, 0FFFFFFFFh
1832
                add     ecx, edi
1833
                mov     edi, [esi+18h]
1834
                rol     ecx, 0Dh
1835
                or      ebp, ecx
1836
                lea     ebx, [ebx+edi+6ED9EBA1h]
1837
                xor     ebp, eax
1838
                mov     edi, ecx
1839
                add     ebx, ebp
1840
                mov     ebp, [esi+34h]
1841
                rol     ebx, 6
1842
                xor     edi, 0FFFFFFFFh
1843
                lea     eax, [eax+ebp+6ED9EBA1h]
1844
                or      edi, ebx
1845
                mov     ebp, ebx
1846
                xor     edi, edx
1847
                xor     ebp, 0FFFFFFFFh
1848
                add     eax, edi
1849
                mov     edi, [esi+2Ch]
1850
                rol     eax, 5
1851
                or      ebp, eax
1852
                lea     edx, [edx+edi+6ED9EBA1h]
1853
                xor     ebp, ecx
1854
                mov     edi, eax
1855
                add     edx, ebp
1856
                mov     ebp, [esi+14h]
1857
                rol     edx, 0Ch
1858
                xor     edi, 0FFFFFFFFh
1859
                lea     ecx, [ecx+ebp+6ED9EBA1h]
1860
                or      edi, edx
1861
                mov     ebp, edx
1862
                xor     edi, ebx
1863
                xor     ebp, 0FFFFFFFFh
1864
                add     ecx, edi
1865
                mov     edi, [esi+30h]
1866
                rol     ecx, 7
1867
                or      ebp, ecx
1868
                lea     ebx, [ebx+edi+6ED9EBA1h]
1869
                xor     ebp, eax
1870
                mov     edi, ecx
1871
                add     ebx, ebp
1872
                mov     ebp, [esi+4]
1873
                rol     ebx, 5
1874
                xor     edi, ebx
1875
                lea     eax, [eax+ebp-70E44324h]
1876
                and     edi, edx
1877
                mov     ebp, [esi+24h]
1878
                xor     edi, ecx
1879
                add     eax, edi
1880
                mov     edi, ebx
1881
                rol     eax, 0Bh
1882
                xor     edi, eax
1883
                lea     edx, [edx+ebp-70E44324h]
1884
                and     edi, ecx
1885
                mov     ebp, [esi+2Ch]
1886
                xor     edi, ebx
1887
                add     edx, edi
1888
                mov     edi, eax
1889
                rol     edx, 0Ch
1890
                xor     edi, edx
1891
                lea     ecx, [ecx+ebp-70E44324h]
1892
                and     edi, ebx
1893
                mov     ebp, [esi+28h]
1894
                xor     edi, eax
1895
                add     ecx, edi
1896
                mov     edi, edx
1897
                rol     ecx, 0Eh
1898
                xor     edi, ecx
1899
                lea     ebx, [ebx+ebp-70E44324h]
1900
                and     edi, eax
1901
                mov     ebp, [esi]
1902
                xor     edi, edx
1903
                add     ebx, edi
1904
                mov     edi, ecx
1905
                rol     ebx, 0Fh
1906
                xor     edi, ebx
1907
                lea     eax, [eax+ebp-70E44324h]
1908
                and     edi, edx
1909
                mov     ebp, [esi+20h]
1910
                xor     edi, ecx
1911
                add     eax, edi
1912
                mov     edi, ebx
1913
                rol     eax, 0Eh
1914
                xor     edi, eax
1915
                lea     edx, [edx+ebp-70E44324h]
1916
                and     edi, ecx
1917
                mov     ebp, [esi+30h]
1918
                xor     edi, ebx
1919
                add     edx, edi
1920
                mov     edi, eax
1921
                rol     edx, 0Fh
1922
                xor     edi, edx
1923
                lea     ecx, [ecx+ebp-70E44324h]
1924
                and     edi, ebx
1925
                mov     ebp, [esi+10h]
1926
                xor     edi, eax
1927
                add     ecx, edi
1928
                mov     edi, edx
1929
                rol     ecx, 9
1930
                xor     edi, ecx
1931
                lea     ebx, [ebx+ebp-70E44324h]
1932
                and     edi, eax
1933
                mov     ebp, [esi+34h]
1934
                xor     edi, edx
1935
                add     ebx, edi
1936
                mov     edi, ecx
1937
                rol     ebx, 8
1938
                xor     edi, ebx
1939
                lea     eax, [eax+ebp-70E44324h]
1940
                and     edi, edx
1941
                mov     ebp, [esi+0Ch]
1942
                xor     edi, ecx
1943
                add     eax, edi
1944
                mov     edi, ebx
1945
                rol     eax, 9
1946
                xor     edi, eax
1947
                lea     edx, [edx+ebp-70E44324h]
1948
                and     edi, ecx
1949
                mov     ebp, [esi+1Ch]
1950
                xor     edi, ebx
1951
                add     edx, edi
1952
                mov     edi, eax
1953
                rol     edx, 0Eh
1954
                xor     edi, edx
1955
                lea     ecx, [ecx+ebp-70E44324h]
1956
                and     edi, ebx
1957
                mov     ebp, [esi+3Ch]
1958
                xor     edi, eax
1959
                add     ecx, edi
1960
                mov     edi, edx
1961
                rol     ecx, 5
1962
                xor     edi, ecx
1963
                lea     ebx, [ebx+ebp-70E44324h]
1964
                and     edi, eax
1965
                mov     ebp, [esi+38h]
1966
                xor     edi, edx
1967
                add     ebx, edi
1968
                mov     edi, ecx
1969
                rol     ebx, 6
1970
                xor     edi, ebx
1971
                lea     eax, [eax+ebp-70E44324h]
1972
                and     edi, edx
1973
                mov     ebp, [esi+14h]
1974
                xor     edi, ecx
1975
                add     eax, edi
1976
                mov     edi, ebx
1977
                rol     eax, 8
1978
                xor     edi, eax
1979
                lea     edx, [edx+ebp-70E44324h]
1980
                and     edi, ecx
1981
                mov     ebp, [esi+18h]
1982
                xor     edi, ebx
1983
                add     edx, edi
1984
                mov     edi, eax
1985
                rol     edx, 6
1986
                xor     edi, edx
1987
                lea     ecx, [ecx+ebp-70E44324h]
1988
                and     edi, ebx
1989
                mov     ebp, [esi+8]
1990
                xor     edi, eax
1991
                add     ecx, edi
1992
                mov     edi, edx
1993
                rol     ecx, 5
1994
                xor     edi, ecx
1995
                lea     ebx, [ebx+ebp-70E44324h]
1996
                and     edi, eax
1997
                xor     edi, edx
1998
                add     ebx, edi
1999
                rol     ebx, 0Ch
2000
                mov     edi, [esp+10h]
2001
                mov     [esp], eax
2002
                mov     [esp+4], ebx
2003
                mov     eax, [edi]
2004
                mov     ebx, [edi+4]
2005
                mov     [esp+8], ecx
2006
                mov     ecx, [edi+8]
2007
                mov     ebp, [esi+14h]
2008
                mov     [esp+0Ch], edx
2009
                mov     edx, [edi+0Ch]
2010
                mov     edi, ecx
2011
                xor     edi, ebx
2012
                lea     eax, [eax+ebp+50A28BE6h]
2013
                and     edi, edx
2014
                mov     ebp, [esi+38h]
2015
                xor     edi, ecx
2016
                add     eax, edi
2017
                mov     edi, ebx
2018
                rol     eax, 8
2019
                xor     edi, eax
2020
                lea     edx, [edx+ebp+50A28BE6h]
2021
                and     edi, ecx
2022
                mov     ebp, [esi+1Ch]
2023
                xor     edi, ebx
2024
                add     edx, edi
2025
                mov     edi, eax
2026
                rol     edx, 9
2027
                xor     edi, edx
2028
                lea     ecx, [ecx+ebp+50A28BE6h]
2029
                and     edi, ebx
2030
                mov     ebp, [esi]
2031
                xor     edi, eax
2032
                add     ecx, edi
2033
                mov     edi, edx
2034
                rol     ecx, 9
2035
                xor     edi, ecx
2036
                lea     ebx, [ebx+ebp+50A28BE6h]
2037
                and     edi, eax
2038
                mov     ebp, [esi+24h]
2039
                xor     edi, edx
2040
                add     ebx, edi
2041
                mov     edi, ecx
2042
                rol     ebx, 0Bh
2043
                xor     edi, ebx
2044
                lea     eax, [eax+ebp+50A28BE6h]
2045
                and     edi, edx
2046
                mov     ebp, [esi+8]
2047
                xor     edi, ecx
2048
                add     eax, edi
2049
                mov     edi, ebx
2050
                rol     eax, 0Dh
2051
                xor     edi, eax
2052
                lea     edx, [edx+ebp+50A28BE6h]
2053
                and     edi, ecx
2054
                mov     ebp, [esi+2Ch]
2055
                xor     edi, ebx
2056
                add     edx, edi
2057
                mov     edi, eax
2058
                rol     edx, 0Fh
2059
                xor     edi, edx
2060
                lea     ecx, [ecx+ebp+50A28BE6h]
2061
                and     edi, ebx
2062
                mov     ebp, [esi+10h]
2063
                xor     edi, eax
2064
                add     ecx, edi
2065
                mov     edi, edx
2066
                rol     ecx, 0Fh
2067
                xor     edi, ecx
2068
                lea     ebx, [ebx+ebp+50A28BE6h]
2069
                and     edi, eax
2070
                mov     ebp, [esi+34h]
2071
                xor     edi, edx
2072
                add     ebx, edi
2073
                mov     edi, ecx
2074
                rol     ebx, 5
2075
                xor     edi, ebx
2076
                lea     eax, [eax+ebp+50A28BE6h]
2077
                and     edi, edx
2078
                mov     ebp, [esi+18h]
2079
                xor     edi, ecx
2080
                add     eax, edi
2081
                mov     edi, ebx
2082
                rol     eax, 7
2083
                xor     edi, eax
2084
                lea     edx, [edx+ebp+50A28BE6h]
2085
                and     edi, ecx
2086
                mov     ebp, [esi+3Ch]
2087
                xor     edi, ebx
2088
                add     edx, edi
2089
                mov     edi, eax
2090
                rol     edx, 7
2091
                xor     edi, edx
2092
                lea     ecx, [ecx+ebp+50A28BE6h]
2093
                and     edi, ebx
2094
                mov     ebp, [esi+20h]
2095
                xor     edi, eax
2096
                add     ecx, edi
2097
                mov     edi, edx
2098
                rol     ecx, 8
2099
                xor     edi, ecx
2100
                lea     ebx, [ebx+ebp+50A28BE6h]
2101
                and     edi, eax
2102
                mov     ebp, [esi+4]
2103
                xor     edi, edx
2104
                add     ebx, edi
2105
                mov     edi, ecx
2106
                rol     ebx, 0Bh
2107
                xor     edi, ebx
2108
                lea     eax, [eax+ebp+50A28BE6h]
2109
                and     edi, edx
2110
                mov     ebp, [esi+28h]
2111
                xor     edi, ecx
2112
                add     eax, edi
2113
                mov     edi, ebx
2114
                rol     eax, 0Eh
2115
                xor     edi, eax
2116
                lea     edx, [edx+ebp+50A28BE6h]
2117
                and     edi, ecx
2118
                mov     ebp, [esi+0Ch]
2119
                xor     edi, ebx
2120
                add     edx, edi
2121
                mov     edi, eax
2122
                rol     edx, 0Eh
2123
                xor     edi, edx
2124
                lea     ecx, [ecx+ebp+50A28BE6h]
2125
                and     edi, ebx
2126
                mov     ebp, [esi+30h]
2127
                xor     edi, eax
2128
                add     ecx, edi
2129
                mov     edi, edx
2130
                rol     ecx, 0Ch
2131
                xor     edi, ecx
2132
                lea     ebx, [ebx+ebp+50A28BE6h]
2133
                and     edi, eax
2134
                mov     ebp, [esi+18h]
2135
                xor     edi, edx
2136
                add     ebx, edi
2137
                mov     edi, ecx
2138
                rol     ebx, 6
2139
                xor     edi, 0FFFFFFFFh
2140
                lea     eax, [eax+ebp+5C4DD124h]
2141
                or      edi, ebx
2142
                mov     ebp, ebx
2143
                xor     edi, edx
2144
                xor     ebp, 0FFFFFFFFh
2145
                add     eax, edi
2146
                mov     edi, [esi+2Ch]
2147
                rol     eax, 9
2148
                or      ebp, eax
2149
                lea     edx, [edx+edi+5C4DD124h]
2150
                xor     ebp, ecx
2151
                mov     edi, eax
2152
                add     edx, ebp
2153
                mov     ebp, [esi+0Ch]
2154
                rol     edx, 0Dh
2155
                xor     edi, 0FFFFFFFFh
2156
                lea     ecx, [ecx+ebp+5C4DD124h]
2157
                or      edi, edx
2158
                mov     ebp, edx
2159
                xor     edi, ebx
2160
                xor     ebp, 0FFFFFFFFh
2161
                add     ecx, edi
2162
                mov     edi, [esi+1Ch]
2163
                rol     ecx, 0Fh
2164
                or      ebp, ecx
2165
                lea     ebx, [ebx+edi+5C4DD124h]
2166
                xor     ebp, eax
2167
                mov     edi, ecx
2168
                add     ebx, ebp
2169
                mov     ebp, [esi]
2170
                rol     ebx, 7
2171
                xor     edi, 0FFFFFFFFh
2172
                lea     eax, [eax+ebp+5C4DD124h]
2173
                or      edi, ebx
2174
                mov     ebp, ebx
2175
                xor     edi, edx
2176
                xor     ebp, 0FFFFFFFFh
2177
                add     eax, edi
2178
                mov     edi, [esi+34h]
2179
                rol     eax, 0Ch
2180
                or      ebp, eax
2181
                lea     edx, [edx+edi+5C4DD124h]
2182
                xor     ebp, ecx
2183
                mov     edi, eax
2184
                add     edx, ebp
2185
                mov     ebp, [esi+14h]
2186
                rol     edx, 8
2187
                xor     edi, 0FFFFFFFFh
2188
                lea     ecx, [ecx+ebp+5C4DD124h]
2189
                or      edi, edx
2190
                mov     ebp, edx
2191
                xor     edi, ebx
2192
                xor     ebp, 0FFFFFFFFh
2193
                add     ecx, edi
2194
                mov     edi, [esi+28h]
2195
                rol     ecx, 9
2196
                or      ebp, ecx
2197
                lea     ebx, [ebx+edi+5C4DD124h]
2198
                xor     ebp, eax
2199
                mov     edi, ecx
2200
                add     ebx, ebp
2201
                mov     ebp, [esi+38h]
2202
                rol     ebx, 0Bh
2203
                xor     edi, 0FFFFFFFFh
2204
                lea     eax, [eax+ebp+5C4DD124h]
2205
                or      edi, ebx
2206
                mov     ebp, ebx
2207
                xor     edi, edx
2208
                xor     ebp, 0FFFFFFFFh
2209
                add     eax, edi
2210
                mov     edi, [esi+3Ch]
2211
                rol     eax, 7
2212
                or      ebp, eax
2213
                lea     edx, [edx+edi+5C4DD124h]
2214
                xor     ebp, ecx
2215
                mov     edi, eax
2216
                add     edx, ebp
2217
                mov     ebp, [esi+20h]
2218
                rol     edx, 7
2219
                xor     edi, 0FFFFFFFFh
2220
                lea     ecx, [ecx+ebp+5C4DD124h]
2221
                or      edi, edx
2222
                mov     ebp, edx
2223
                xor     edi, ebx
2224
                xor     ebp, 0FFFFFFFFh
2225
                add     ecx, edi
2226
                mov     edi, [esi+30h]
2227
                rol     ecx, 0Ch
2228
                or      ebp, ecx
2229
                lea     ebx, [ebx+edi+5C4DD124h]
2230
                xor     ebp, eax
2231
                mov     edi, ecx
2232
                add     ebx, ebp
2233
                mov     ebp, [esi+10h]
2234
                rol     ebx, 7
2235
                xor     edi, 0FFFFFFFFh
2236
                lea     eax, [eax+ebp+5C4DD124h]
2237
                or      edi, ebx
2238
                mov     ebp, ebx
2239
                xor     edi, edx
2240
                xor     ebp, 0FFFFFFFFh
2241
                add     eax, edi
2242
                mov     edi, [esi+24h]
2243
                rol     eax, 6
2244
                or      ebp, eax
2245
                lea     edx, [edx+edi+5C4DD124h]
2246
                xor     ebp, ecx
2247
                mov     edi, eax
2248
                add     edx, ebp
2249
                mov     ebp, [esi+4]
2250
                rol     edx, 0Fh
2251
                xor     edi, 0FFFFFFFFh
2252
                lea     ecx, [ecx+ebp+5C4DD124h]
2253
                or      edi, edx
2254
                mov     ebp, edx
2255
                xor     edi, ebx
2256
                xor     ebp, 0FFFFFFFFh
2257
                add     ecx, edi
2258
                mov     edi, [esi+8]
2259
                rol     ecx, 0Dh
2260
                or      ebp, ecx
2261
                lea     ebx, [ebx+edi+5C4DD124h]
2262
                xor     ebp, eax
2263
                mov     edi, ecx
2264
                add     ebx, ebp
2265
                mov     ebp, [esi+3Ch]
2266
                rol     ebx, 0Bh
2267
                xor     edi, edx
2268
                lea     eax, [eax+ebp+6D703EF3h]
2269
                and     edi, ebx
2270
                mov     ebp, ebx
2271
                xor     edi, edx
2272
                xor     ebp, ecx
2273
                add     eax, edi
2274
                mov     edi, [esi+14h]
2275
                rol     eax, 9
2276
                and     ebp, eax
2277
                lea     edx, [edx+edi+6D703EF3h]
2278
                xor     ebp, ecx
2279
                mov     edi, eax
2280
                add     edx, ebp
2281
                mov     ebp, [esi+4]
2282
                rol     edx, 7
2283
                xor     edi, ebx
2284
                lea     ecx, [ecx+ebp+6D703EF3h]
2285
                and     edi, edx
2286
                mov     ebp, edx
2287
                xor     edi, ebx
2288
                xor     ebp, eax
2289
                add     ecx, edi
2290
                mov     edi, [esi+0Ch]
2291
                rol     ecx, 0Fh
2292
                and     ebp, ecx
2293
                lea     ebx, [ebx+edi+6D703EF3h]
2294
                xor     ebp, eax
2295
                mov     edi, ecx
2296
                add     ebx, ebp
2297
                mov     ebp, [esi+1Ch]
2298
                rol     ebx, 0Bh
2299
                xor     edi, edx
2300
                lea     eax, [eax+ebp+6D703EF3h]
2301
                and     edi, ebx
2302
                mov     ebp, ebx
2303
                xor     edi, edx
2304
                xor     ebp, ecx
2305
                add     eax, edi
2306
                mov     edi, [esi+38h]
2307
                rol     eax, 8
2308
                and     ebp, eax
2309
                lea     edx, [edx+edi+6D703EF3h]
2310
                xor     ebp, ecx
2311
                mov     edi, eax
2312
                add     edx, ebp
2313
                mov     ebp, [esi+18h]
2314
                rol     edx, 6
2315
                xor     edi, ebx
2316
                lea     ecx, [ecx+ebp+6D703EF3h]
2317
                and     edi, edx
2318
                mov     ebp, edx
2319
                xor     edi, ebx
2320
                xor     ebp, eax
2321
                add     ecx, edi
2322
                mov     edi, [esi+24h]
2323
                rol     ecx, 6
2324
                and     ebp, ecx
2325
                lea     ebx, [ebx+edi+6D703EF3h]
2326
                xor     ebp, eax
2327
                mov     edi, ecx
2328
                add     ebx, ebp
2329
                mov     ebp, [esi+2Ch]
2330
                rol     ebx, 0Eh
2331
                xor     edi, edx
2332
                lea     eax, [eax+ebp+6D703EF3h]
2333
                and     edi, ebx
2334
                mov     ebp, ebx
2335
                xor     edi, edx
2336
                xor     ebp, ecx
2337
                add     eax, edi
2338
                mov     edi, [esi+20h]
2339
                rol     eax, 0Ch
2340
                and     ebp, eax
2341
                lea     edx, [edx+edi+6D703EF3h]
2342
                xor     ebp, ecx
2343
                mov     edi, eax
2344
                add     edx, ebp
2345
                mov     ebp, [esi+30h]
2346
                rol     edx, 0Dh
2347
                xor     edi, ebx
2348
                lea     ecx, [ecx+ebp+6D703EF3h]
2349
                and     edi, edx
2350
                mov     ebp, edx
2351
                xor     edi, ebx
2352
                xor     ebp, eax
2353
                add     ecx, edi
2354
                mov     edi, [esi+8]
2355
                rol     ecx, 5
2356
                and     ebp, ecx
2357
                lea     ebx, [ebx+edi+6D703EF3h]
2358
                xor     ebp, eax
2359
                mov     edi, ecx
2360
                add     ebx, ebp
2361
                mov     ebp, [esi+28h]
2362
                rol     ebx, 0Eh
2363
                xor     edi, edx
2364
                lea     eax, [eax+ebp+6D703EF3h]
2365
                and     edi, ebx
2366
                mov     ebp, ebx
2367
                xor     edi, edx
2368
                xor     ebp, ecx
2369
                add     eax, edi
2370
                mov     edi, [esi]
2371
                rol     eax, 0Dh
2372
                and     ebp, eax
2373
                lea     edx, [edx+edi+6D703EF3h]
2374
                xor     ebp, ecx
2375
                mov     edi, eax
2376
                add     edx, ebp
2377
                mov     ebp, [esi+10h]
2378
                rol     edx, 0Dh
2379
                xor     edi, ebx
2380
                lea     ecx, [ecx+ebp+6D703EF3h]
2381
                and     edi, edx
2382
                mov     ebp, edx
2383
                xor     edi, ebx
2384
                xor     ebp, eax
2385
                add     ecx, edi
2386
                mov     edi, [esi+34h]
2387
                rol     ecx, 7
2388
                and     ebp, ecx
2389
                lea     ebx, [ebx+edi+6D703EF3h]
2390
                xor     ebp, eax
2391
                add     ebx, ebp
2392
                rol     ebx, 5
2393
                mov     edi, edx
2394
                xor     edi, ecx
2395
                mov     ebp, [esi+20h]
2396
                xor     edi, ebx
2397
                add     eax, ebp
2398
                add     eax, edi
2399
                mov     edi, ecx
2400
                rol     eax, 0Fh
2401
                xor     edi, ebx
2402
                mov     ebp, [esi+18h]
2403
                xor     edi, eax
2404
                add     edx, ebp
2405
                add     edx, edi
2406
                mov     edi, ebx
2407
                rol     edx, 5
2408
                xor     edi, eax
2409
                mov     ebp, [esi+10h]
2410
                xor     edi, edx
2411
                add     ecx, ebp
2412
                add     ecx, edi
2413
                mov     edi, eax
2414
                rol     ecx, 8
2415
                xor     edi, edx
2416
                mov     ebp, [esi+4]
2417
                xor     edi, ecx
2418
                add     ebx, ebp
2419
                add     ebx, edi
2420
                mov     edi, edx
2421
                rol     ebx, 0Bh
2422
                xor     edi, ecx
2423
                mov     ebp, [esi+0Ch]
2424
                xor     edi, ebx
2425
                add     eax, ebp
2426
                add     eax, edi
2427
                mov     edi, ecx
2428
                rol     eax, 0Eh
2429
                xor     edi, ebx
2430
                mov     ebp, [esi+2Ch]
2431
                xor     edi, eax
2432
                add     edx, ebp
2433
                add     edx, edi
2434
                mov     edi, ebx
2435
                rol     edx, 0Eh
2436
                xor     edi, eax
2437
                mov     ebp, [esi+3Ch]
2438
                xor     edi, edx
2439
                add     ecx, ebp
2440
                add     ecx, edi
2441
                mov     edi, eax
2442
                rol     ecx, 6
2443
                xor     edi, edx
2444
                mov     ebp, [esi]
2445
                xor     edi, ecx
2446
                add     ebx, ebp
2447
                add     ebx, edi
2448
                mov     edi, edx
2449
                rol     ebx, 0Eh
2450
                xor     edi, ecx
2451
                mov     ebp, [esi+14h]
2452
                xor     edi, ebx
2453
                add     eax, ebp
2454
                add     eax, edi
2455
                mov     edi, ecx
2456
                rol     eax, 6
2457
                xor     edi, ebx
2458
                mov     ebp, [esi+30h]
2459
                xor     edi, eax
2460
                add     edx, ebp
2461
                add     edx, edi
2462
                mov     edi, ebx
2463
                rol     edx, 9
2464
                xor     edi, eax
2465
                mov     ebp, [esi+8]
2466
                xor     edi, edx
2467
                add     ecx, ebp
2468
                add     ecx, edi
2469
                mov     edi, eax
2470
                rol     ecx, 0Ch
2471
                xor     edi, edx
2472
                mov     ebp, [esi+34h]
2473
                xor     edi, ecx
2474
                add     ebx, ebp
2475
                add     ebx, edi
2476
                mov     edi, edx
2477
                rol     ebx, 9
2478
                xor     edi, ecx
2479
                mov     ebp, [esi+24h]
2480
                xor     edi, ebx
2481
                add     eax, ebp
2482
                add     eax, edi
2483
                mov     edi, ecx
2484
                rol     eax, 0Ch
2485
                xor     edi, ebx
2486
                mov     ebp, [esi+1Ch]
2487
                xor     edi, eax
2488
                add     edx, ebp
2489
                add     edx, edi
2490
                mov     edi, ebx
2491
                rol     edx, 5
2492
                xor     edi, eax
2493
                mov     ebp, [esi+28h]
2494
                xor     edi, edx
2495
                add     ecx, ebp
2496
                add     ecx, edi
2497
                mov     edi, eax
2498
                rol     ecx, 0Fh
2499
                xor     edi, edx
2500
                mov     ebp, [esi+38h]
2501
                xor     edi, ecx
2502
                add     ebx, ebp
2503
                add     ebx, edi
2504
                rol     ebx, 8
2505
                mov     edi, [esp+10h]
2506
                mov     ebp, [esp+8]
2507
                mov     esi, [esp+0Ch]
2508
                add     edx, ebp
2509
                add     eax, esi
2510
                mov     ebp, [edi+4]
2511
                mov     esi, [edi+8]
2512
                add     edx, ebp
2513
                add     eax, esi
2514
                mov     [edi+4], eax
2515
                mov     ebp, [esp]
2516
                mov     esi, [esp+4]
2517
                add     ebx, ebp
2518
                add     ecx, esi
2519
                mov     ebp, [edi+0Ch]
2520
                mov     esi, [edi]
2521
                add     ebx, ebp
2522
                add     ecx, esi
2523
                mov     [edi+8], ebx
2524
                add     esp, 14h
2525
                mov     [edi+0Ch], ecx
2526
                mov     [edi], edx
2527
2528
                pop     ebp
2529
                pop     edi
2530
                pop     esi
2531
                pop     ebx
2532
end;
2533
{$ENDIF}
2534
2535
{$IFDEF THash_RipeMD160_asm}
2536
procedure THash_RipeMD160.DoTransform(Buffer: PUInt32Array);
2537
asm
2538
                push    ebx
2539
                push    esi
2540
                push    edi
2541
                lea     edi, [eax].THash_RipeMD160.FDigest
2542
                mov     esi, edx
2543
                push    ebp
2544
2545
                mov     eax, [edi]
2546
                mov     ebx, [edi+4]
2547
                push    edi
2548
                mov     ecx, [edi+8]
2549
                mov     edx, [edi+0Ch]
2550
                mov     ebp, [edi+10h]
2551
                add     esp, 0FFFFFFECh
2552
                mov     edi, edx
2553
                xor     edi, ecx
2554
                xor     edi, ebx
2555
                add     eax, [esi]
2556
                rol     ecx, 0Ah
2557
                add     eax, edi
2558
                mov     edi, ecx
2559
                rol     eax, 0Bh
2560
                add     eax, ebp
2561
                xor     edi, ebx
2562
                xor     edi, eax
2563
                add     ebp, [esi+4]
2564
                rol     ebx, 0Ah
2565
                add     ebp, edi
2566
                mov     edi, ebx
2567
                rol     ebp, 0Eh
2568
                add     ebp, edx
2569
                xor     edi, eax
2570
                xor     edi, ebp
2571
                add     edx, [esi+8]
2572
                rol     eax, 0Ah
2573
                add     edx, edi
2574
                mov     edi, eax
2575
                rol     edx, 0Fh
2576
                add     edx, ecx
2577
                xor     edi, ebp
2578
                xor     edi, edx
2579
                add     ecx, [esi+0Ch]
2580
                rol     ebp, 0Ah
2581
                add     ecx, edi
2582
                mov     edi, ebp
2583
                rol     ecx, 0Ch
2584
                add     ecx, ebx
2585
                xor     edi, edx
2586
                xor     edi, ecx
2587
                add     ebx, [esi+10h]
2588
                rol     edx, 0Ah
2589
                add     ebx, edi
2590
                mov     edi, edx
2591
                rol     ebx, 5
2592
                add     ebx, eax
2593
                xor     edi, ecx
2594
                xor     edi, ebx
2595
                add     eax, [esi+14h]
2596
                rol     ecx, 0Ah
2597
                add     eax, edi
2598
                mov     edi, ecx
2599
                rol     eax, 8
2600
                add     eax, ebp
2601
                xor     edi, ebx
2602
                xor     edi, eax
2603
                add     ebp, [esi+18h]
2604
                rol     ebx, 0Ah
2605
                add     ebp, edi
2606
                mov     edi, ebx
2607
                rol     ebp, 7
2608
                add     ebp, edx
2609
                xor     edi, eax
2610
                xor     edi, ebp
2611
                add     edx, [esi+1Ch]
2612
                rol     eax, 0Ah
2613
                add     edx, edi
2614
                mov     edi, eax
2615
                rol     edx, 9
2616
                add     edx, ecx
2617
                xor     edi, ebp
2618
                xor     edi, edx
2619
                add     ecx, [esi+20h]
2620
                rol     ebp, 0Ah
2621
                add     ecx, edi
2622
                mov     edi, ebp
2623
                rol     ecx, 0Bh
2624
                add     ecx, ebx
2625
                xor     edi, edx
2626
                xor     edi, ecx
2627
                add     ebx, [esi+24h]
2628
                rol     edx, 0Ah
2629
                add     ebx, edi
2630
                mov     edi, edx
2631
                rol     ebx, 0Dh
2632
                add     ebx, eax
2633
                xor     edi, ecx
2634
                xor     edi, ebx
2635
                add     eax, [esi+28h]
2636
                rol     ecx, 0Ah
2637
                add     eax, edi
2638
                mov     edi, ecx
2639
                rol     eax, 0Eh
2640
                add     eax, ebp
2641
                xor     edi, ebx
2642
                xor     edi, eax
2643
                add     ebp, [esi+2Ch]
2644
                rol     ebx, 0Ah
2645
                add     ebp, edi
2646
                mov     edi, ebx
2647
                rol     ebp, 0Fh
2648
                add     ebp, edx
2649
                xor     edi, eax
2650
                xor     edi, ebp
2651
                add     edx, [esi+30h]
2652
                rol     eax, 0Ah
2653
                add     edx, edi
2654
                mov     edi, eax
2655
                rol     edx, 6
2656
                add     edx, ecx
2657
                xor     edi, ebp
2658
                xor     edi, edx
2659
                add     ecx, [esi+34h]
2660
                rol     ebp, 0Ah
2661
                add     ecx, edi
2662
                mov     edi, ebp
2663
                rol     ecx, 7
2664
                add     ecx, ebx
2665
                xor     edi, edx
2666
                xor     edi, ecx
2667
                add     ebx, [esi+38h]
2668
                rol     edx, 0Ah
2669
                add     ebx, edi
2670
                mov     edi, edx
2671
                rol     ebx, 9
2672
                add     ebx, eax
2673
                xor     edi, ecx
2674
                xor     edi, ebx
2675
                add     eax, [esi+3Ch]
2676
                rol     ecx, 0Ah
2677
                add     eax, edi
2678
                mov     edi, ecx
2679
                rol     eax, 8
2680
                add     eax, ebp
2681
                xor     edi, ebx
2682
                add     ebp, [esi+1Ch]
2683
                and     edi, eax
2684
                xor     edi, ecx
2685
                rol     ebx, 0Ah
2686
                lea     ebp, [ebp+edi+5A827999h]
2687
                mov     edi, ebx
2688
                rol     ebp, 7
2689
                add     ebp, edx
2690
                xor     edi, eax
2691
                add     edx, [esi+10h]
2692
                and     edi, ebp
2693
                xor     edi, ebx
2694
                rol     eax, 0Ah
2695
                lea     edx, [edx+edi+5A827999h]
2696
                mov     edi, eax
2697
                rol     edx, 6
2698
                add     edx, ecx
2699
                xor     edi, ebp
2700
                add     ecx, [esi+34h]
2701
                and     edi, edx
2702
                xor     edi, eax
2703
                rol     ebp, 0Ah
2704
                lea     ecx, [ecx+edi+5A827999h]
2705
                mov     edi, ebp
2706
                rol     ecx, 8
2707
                add     ecx, ebx
2708
                xor     edi, edx
2709
                add     ebx, [esi+4]
2710
                and     edi, ecx
2711
                xor     edi, ebp
2712
                rol     edx, 0Ah
2713
                lea     ebx, [ebx+edi+5A827999h]
2714
                mov     edi, edx
2715
                rol     ebx, 0Dh
2716
                add     ebx, eax
2717
                xor     edi, ecx
2718
                add     eax, [esi+28h]
2719
                and     edi, ebx
2720
                xor     edi, edx
2721
                rol     ecx, 0Ah
2722
                lea     eax, [eax+edi+5A827999h]
2723
                mov     edi, ecx
2724
                rol     eax, 0Bh
2725
                add     eax, ebp
2726
                xor     edi, ebx
2727
                add     ebp, [esi+18h]
2728
                and     edi, eax
2729
                xor     edi, ecx
2730
                rol     ebx, 0Ah
2731
                lea     ebp, [ebp+edi+5A827999h]
2732
                mov     edi, ebx
2733
                rol     ebp, 9
2734
                add     ebp, edx
2735
                xor     edi, eax
2736
                add     edx, [esi+3Ch]
2737
                and     edi, ebp
2738
                xor     edi, ebx
2739
                rol     eax, 0Ah
2740
                lea     edx, [edx+edi+5A827999h]
2741
                mov     edi, eax
2742
                rol     edx, 7
2743
                add     edx, ecx
2744
                xor     edi, ebp
2745
                add     ecx, [esi+0Ch]
2746
                and     edi, edx
2747
                xor     edi, eax
2748
                rol     ebp, 0Ah
2749
                lea     ecx, [ecx+edi+5A827999h]
2750
                mov     edi, ebp
2751
                rol     ecx, 0Fh
2752
                add     ecx, ebx
2753
                xor     edi, edx
2754
                add     ebx, [esi+30h]
2755
                and     edi, ecx
2756
                xor     edi, ebp
2757
                rol     edx, 0Ah
2758
                lea     ebx, [ebx+edi+5A827999h]
2759
                mov     edi, edx
2760
                rol     ebx, 7
2761
                add     ebx, eax
2762
                xor     edi, ecx
2763
                add     eax, [esi]
2764
                and     edi, ebx
2765
                xor     edi, edx
2766
                rol     ecx, 0Ah
2767
                lea     eax, [eax+edi+5A827999h]
2768
                mov     edi, ecx
2769
                rol     eax, 0Ch
2770
                add     eax, ebp
2771
                xor     edi, ebx
2772
                add     ebp, [esi+24h]
2773
                and     edi, eax
2774
                xor     edi, ecx
2775
                rol     ebx, 0Ah
2776
                lea     ebp, [ebp+edi+5A827999h]
2777
                mov     edi, ebx
2778
                rol     ebp, 0Fh
2779
                add     ebp, edx
2780
                xor     edi, eax
2781
                add     edx, [esi+14h]
2782
                and     edi, ebp
2783
                xor     edi, ebx
2784
                rol     eax, 0Ah
2785
                lea     edx, [edx+edi+5A827999h]
2786
                mov     edi, eax
2787
                rol     edx, 9
2788
                add     edx, ecx
2789
                xor     edi, ebp
2790
                add     ecx, [esi+8]
2791
                and     edi, edx
2792
                xor     edi, eax
2793
                rol     ebp, 0Ah
2794
                lea     ecx, [ecx+edi+5A827999h]
2795
                mov     edi, ebp
2796
                rol     ecx, 0Bh
2797
                add     ecx, ebx
2798
                xor     edi, edx
2799
                add     ebx, [esi+38h]
2800
                and     edi, ecx
2801
                xor     edi, ebp
2802
                rol     edx, 0Ah
2803
                lea     ebx, [ebx+edi+5A827999h]
2804
                mov     edi, edx
2805
                rol     ebx, 7
2806
                add     ebx, eax
2807
                xor     edi, ecx
2808
                add     eax, [esi+2Ch]
2809
                and     edi, ebx
2810
                xor     edi, edx
2811
                rol     ecx, 0Ah
2812
                lea     eax, [eax+edi+5A827999h]
2813
                mov     edi, ecx
2814
                rol     eax, 0Dh
2815
                add     eax, ebp
2816
                xor     edi, ebx
2817
                add     ebp, [esi+20h]
2818
                and     edi, eax
2819
                xor     edi, ecx
2820
                rol     ebx, 0Ah
2821
                lea     ebp, [ebp+edi+5A827999h]
2822
                mov     edi, ebx
2823
                rol     ebp, 0Ch
2824
                add     ebp, edx
2825
                mov     edi, eax
2826
                xor     edi, 0FFFFFFFFh
2827
                or      edi, ebp
2828
                add     edx, [esi+0Ch]
2829
                xor     edi, ebx
2830
                rol     eax, 0Ah
2831
                lea     edx, [edx+edi+6ED9EBA1h]
2832
                mov     edi, ebp
2833
                rol     edx, 0Bh
2834
                xor     edi, 0FFFFFFFFh
2835
                add     edx, ecx
2836
                or      edi, edx
2837
                add     ecx, [esi+28h]
2838
                xor     edi, eax
2839
                rol     ebp, 0Ah
2840
                lea     ecx, [ecx+edi+6ED9EBA1h]
2841
                mov     edi, edx
2842
                rol     ecx, 0Dh
2843
                xor     edi, 0FFFFFFFFh
2844
                add     ecx, ebx
2845
                or      edi, ecx
2846
                add     ebx, [esi+38h]
2847
                xor     edi, ebp
2848
                rol     edx, 0Ah
2849
                lea     ebx, [ebx+edi+6ED9EBA1h]
2850
                mov     edi, ecx
2851
                rol     ebx, 6
2852
                xor     edi, 0FFFFFFFFh
2853
                add     ebx, eax
2854
                or      edi, ebx
2855
                add     eax, [esi+10h]
2856
                xor     edi, edx
2857
                rol     ecx, 0Ah
2858
                lea     eax, [eax+edi+6ED9EBA1h]
2859
                mov     edi, ebx
2860
                rol     eax, 7
2861
                xor     edi, 0FFFFFFFFh
2862
                add     eax, ebp
2863
                or      edi, eax
2864
                add     ebp, [esi+24h]
2865
                xor     edi, ecx
2866
                rol     ebx, 0Ah
2867
                lea     ebp, [ebp+edi+6ED9EBA1h]
2868
                mov     edi, eax
2869
                rol     ebp, 0Eh
2870
                xor     edi, 0FFFFFFFFh
2871
                add     ebp, edx
2872
                or      edi, ebp
2873
                add     edx, [esi+3Ch]
2874
                xor     edi, ebx
2875
                rol     eax, 0Ah
2876
                lea     edx, [edx+edi+6ED9EBA1h]
2877
                mov     edi, ebp
2878
                rol     edx, 9
2879
                xor     edi, 0FFFFFFFFh
2880
                add     edx, ecx
2881
                or      edi, edx
2882
                add     ecx, [esi+20h]
2883
                xor     edi, eax
2884
                rol     ebp, 0Ah
2885
                lea     ecx, [ecx+edi+6ED9EBA1h]
2886
                mov     edi, edx
2887
                rol     ecx, 0Dh
2888
                xor     edi, 0FFFFFFFFh
2889
                add     ecx, ebx
2890
                or      edi, ecx
2891
                add     ebx, [esi+4]
2892
                xor     edi, ebp
2893
                rol     edx, 0Ah
2894
                lea     ebx, [ebx+edi+6ED9EBA1h]
2895
                mov     edi, ecx
2896
                rol     ebx, 0Fh
2897
                xor     edi, 0FFFFFFFFh
2898
                add     ebx, eax
2899
                or      edi, ebx
2900
                add     eax, [esi+8]
2901
                xor     edi, edx
2902
                rol     ecx, 0Ah
2903
                lea     eax, [eax+edi+6ED9EBA1h]
2904
                mov     edi, ebx
2905
                rol     eax, 0Eh
2906
                xor     edi, 0FFFFFFFFh
2907
                add     eax, ebp
2908
                or      edi, eax
2909
                add     ebp, [esi+1Ch]
2910
                xor     edi, ecx
2911
                rol     ebx, 0Ah
2912
                lea     ebp, [ebp+edi+6ED9EBA1h]
2913
                mov     edi, eax
2914
                rol     ebp, 8
2915
                xor     edi, 0FFFFFFFFh
2916
                add     ebp, edx
2917
                or      edi, ebp
2918
                add     edx, [esi]
2919
                xor     edi, ebx
2920
                rol     eax, 0Ah
2921
                lea     edx, [edx+edi+6ED9EBA1h]
2922
                mov     edi, ebp
2923
                rol     edx, 0Dh
2924
                xor     edi, 0FFFFFFFFh
2925
                add     edx, ecx
2926
                or      edi, edx
2927
                add     ecx, [esi+18h]
2928
                xor     edi, eax
2929
                rol     ebp, 0Ah
2930
                lea     ecx, [ecx+edi+6ED9EBA1h]
2931
                mov     edi, edx
2932
                rol     ecx, 6
2933
                xor     edi, 0FFFFFFFFh
2934
                add     ecx, ebx
2935
                or      edi, ecx
2936
                add     ebx, [esi+34h]
2937
                xor     edi, ebp
2938
                rol     edx, 0Ah
2939
                lea     ebx, [ebx+edi+6ED9EBA1h]
2940
                mov     edi, ecx
2941
                rol     ebx, 5
2942
                xor     edi, 0FFFFFFFFh
2943
                add     ebx, eax
2944
                or      edi, ebx
2945
                add     eax, [esi+2Ch]
2946
                xor     edi, edx
2947
                rol     ecx, 0Ah
2948
                lea     eax, [eax+edi+6ED9EBA1h]
2949
                mov     edi, ebx
2950
                rol     eax, 0Ch
2951
                xor     edi, 0FFFFFFFFh
2952
                add     eax, ebp
2953
                or      edi, eax
2954
                add     ebp, [esi+14h]
2955
                xor     edi, ecx
2956
                rol     ebx, 0Ah
2957
                lea     ebp, [ebp+edi+6ED9EBA1h]
2958
                mov     edi, eax
2959
                rol     ebp, 7
2960
                xor     edi, 0FFFFFFFFh
2961
                add     ebp, edx
2962
                or      edi, ebp
2963
                add     edx, [esi+30h]
2964
                xor     edi, ebx
2965
                rol     eax, 0Ah
2966
                lea     edx, [edx+edi+6ED9EBA1h]
2967
                mov     edi, ebp
2968
                rol     edx, 5
2969
                xor     edi, 0FFFFFFFFh
2970
                add     edx, ecx
2971
                mov     edi, ebp
2972
                xor     edi, edx
2973
                and     edi, eax
2974
                add     ecx, [esi+4]
2975
                xor     edi, ebp
2976
                rol     ebp, 0Ah
2977
                lea     ecx, [ecx+edi-70E44324h]
2978
                mov     edi, edx
2979
                rol     ecx, 0Bh
2980
                add     ecx, ebx
2981
                xor     edi, ecx
2982
                and     edi, ebp
2983
                add     ebx, [esi+24h]
2984
                xor     edi, edx
2985
                rol     edx, 0Ah
2986
                lea     ebx, [ebx+edi-70E44324h]
2987
                mov     edi, ecx
2988
                rol     ebx, 0Ch
2989
                add     ebx, eax
2990
                xor     edi, ebx
2991
                and     edi, edx
2992
                add     eax, [esi+2Ch]
2993
                xor     edi, ecx
2994
                rol     ecx, 0Ah
2995
                lea     eax, [eax+edi-70E44324h]
2996
                mov     edi, ebx
2997
                rol     eax, 0Eh
2998
                add     eax, ebp
2999
                xor     edi, eax
3000
                and     edi, ecx
3001
                add     ebp, [esi+28h]
3002
                xor     edi, ebx
3003
                rol     ebx, 0Ah
3004
                lea     ebp, [ebp+edi-70E44324h]
3005
                mov     edi, eax
3006
                rol     ebp, 0Fh
3007
                add     ebp, edx
3008
                xor     edi, ebp
3009
                and     edi, ebx
3010
                add     edx, [esi]
3011
                xor     edi, eax
3012
                rol     eax, 0Ah
3013
                lea     edx, [edx+edi-70E44324h]
3014
                mov     edi, ebp
3015
                rol     edx, 0Eh
3016
                add     edx, ecx
3017
                xor     edi, edx
3018
                and     edi, eax
3019
                add     ecx, [esi+20h]
3020
                xor     edi, ebp
3021
                rol     ebp, 0Ah
3022
                lea     ecx, [ecx+edi-70E44324h]
3023
                mov     edi, edx
3024
                rol     ecx, 0Fh
3025
                add     ecx, ebx
3026
                xor     edi, ecx
3027
                and     edi, ebp
3028
                add     ebx, [esi+30h]
3029
                xor     edi, edx
3030
                rol     edx, 0Ah
3031
                lea     ebx, [ebx+edi-70E44324h]
3032
                mov     edi, ecx
3033
                rol     ebx, 9
3034
                add     ebx, eax
3035
                xor     edi, ebx
3036
                and     edi, edx
3037
                add     eax, [esi+10h]
3038
                xor     edi, ecx
3039
                rol     ecx, 0Ah
3040
                lea     eax, [eax+edi-70E44324h]
3041
                mov     edi, ebx
3042
                rol     eax, 8
3043
                add     eax, ebp
3044
                xor     edi, eax
3045
                and     edi, ecx
3046
                add     ebp, [esi+34h]
3047
                xor     edi, ebx
3048
                rol     ebx, 0Ah
3049
                lea     ebp, [ebp+edi-70E44324h]
3050
                mov     edi, eax
3051
                rol     ebp, 9
3052
                add     ebp, edx
3053
                xor     edi, ebp
3054
                and     edi, ebx
3055
                add     edx, [esi+0Ch]
3056
                xor     edi, eax
3057
                rol     eax, 0Ah
3058
                lea     edx, [edx+edi-70E44324h]
3059
                mov     edi, ebp
3060
                rol     edx, 0Eh
3061
                add     edx, ecx
3062
                xor     edi, edx
3063
                and     edi, eax
3064
                add     ecx, [esi+1Ch]
3065
                xor     edi, ebp
3066
                rol     ebp, 0Ah
3067
                lea     ecx, [ecx+edi-70E44324h]
3068
                mov     edi, edx
3069
                rol     ecx, 5
3070
                add     ecx, ebx
3071
                xor     edi, ecx
3072
                and     edi, ebp
3073
                add     ebx, [esi+3Ch]
3074
                xor     edi, edx
3075
                rol     edx, 0Ah
3076
                lea     ebx, [ebx+edi-70E44324h]
3077
                mov     edi, ecx
3078
                rol     ebx, 6
3079
                add     ebx, eax
3080
                xor     edi, ebx
3081
                and     edi, edx
3082
                add     eax, [esi+38h]
3083
                xor     edi, ecx
3084
                rol     ecx, 0Ah
3085
                lea     eax, [eax+edi-70E44324h]
3086
                mov     edi, ebx
3087
                rol     eax, 8
3088
                add     eax, ebp
3089
                xor     edi, eax
3090
                and     edi, ecx
3091
                add     ebp, [esi+14h]
3092
                xor     edi, ebx
3093
                rol     ebx, 0Ah
3094
                lea     ebp, [ebp+edi-70E44324h]
3095
                mov     edi, eax
3096
                rol     ebp, 6
3097
                add     ebp, edx
3098
                xor     edi, ebp
3099
                and     edi, ebx
3100
                add     edx, [esi+18h]
3101
                xor     edi, eax
3102
                rol     eax, 0Ah
3103
                lea     edx, [edx+edi-70E44324h]
3104
                mov     edi, ebp
3105
                rol     edx, 5
3106
                add     edx, ecx
3107
                xor     edi, edx
3108
                and     edi, eax
3109
                add     ecx, [esi+8]
3110
                xor     edi, ebp
3111
                rol     ebp, 0Ah
3112
                lea     ecx, [ecx+edi-70E44324h]
3113
                mov     edi, edx
3114
                rol     ecx, 0Ch
3115
                add     ecx, ebx
3116
                mov     edi, ebp
3117
                xor     edi, 0FFFFFFFFh
3118
                or      edi, edx
3119
                add     ebx, [esi+10h]
3120
                xor     edi, ecx
3121
                rol     edx, 0Ah
3122
                lea     ebx, [ebx+edi-56AC02B2h]
3123
                mov     edi, edx
3124
                rol     ebx, 9
3125
                add     ebx, eax
3126
                xor     edi, 0FFFFFFFFh
3127
                or      edi, ecx
3128
                add     eax, [esi]
3129
                xor     edi, ebx
3130
                rol     ecx, 0Ah
3131
                lea     eax, [eax+edi-56AC02B2h]
3132
                mov     edi, ecx
3133
                rol     eax, 0Fh
3134
                add     eax, ebp
3135
                xor     edi, 0FFFFFFFFh
3136
                or      edi, ebx
3137
                add     ebp, [esi+14h]
3138
                xor     edi, eax
3139
                rol     ebx, 0Ah
3140
                lea     ebp, [ebp+edi-56AC02B2h]
3141
                mov     edi, ebx
3142
                rol     ebp, 5
3143
                add     ebp, edx
3144
                xor     edi, 0FFFFFFFFh
3145
                or      edi, eax
3146
                add     edx, [esi+24h]
3147
                xor     edi, ebp
3148
                rol     eax, 0Ah
3149
                lea     edx, [edx+edi-56AC02B2h]
3150
                mov     edi, eax
3151
                rol     edx, 0Bh
3152
                add     edx, ecx
3153
                xor     edi, 0FFFFFFFFh
3154
                or      edi, ebp
3155
                add     ecx, [esi+1Ch]
3156
                xor     edi, edx
3157
                rol     ebp, 0Ah
3158
                lea     ecx, [ecx+edi-56AC02B2h]
3159
                mov     edi, ebp
3160
                rol     ecx, 6
3161
                add     ecx, ebx
3162
                xor     edi, 0FFFFFFFFh
3163
                or      edi, edx
3164
                add     ebx, [esi+30h]
3165
                xor     edi, ecx
3166
                rol     edx, 0Ah
3167
                lea     ebx, [ebx+edi-56AC02B2h]
3168
                mov     edi, edx
3169
                rol     ebx, 8
3170
                add     ebx, eax
3171
                xor     edi, 0FFFFFFFFh
3172
                or      edi, ecx
3173
                add     eax, [esi+8]
3174
                xor     edi, ebx
3175
                rol     ecx, 0Ah
3176
                lea     eax, [eax+edi-56AC02B2h]
3177
                mov     edi, ecx
3178
                rol     eax, 0Dh
3179
                add     eax, ebp
3180
                xor     edi, 0FFFFFFFFh
3181
                or      edi, ebx
3182
                add     ebp, [esi+28h]
3183
                xor     edi, eax
3184
                rol     ebx, 0Ah
3185
                lea     ebp, [ebp+edi-56AC02B2h]
3186
                mov     edi, ebx
3187
                rol     ebp, 0Ch
3188
                add     ebp, edx
3189
                xor     edi, 0FFFFFFFFh
3190
                or      edi, eax
3191
                add     edx, [esi+38h]
3192
                xor     edi, ebp
3193
                rol     eax, 0Ah
3194
                lea     edx, [edx+edi-56AC02B2h]
3195
                mov     edi, eax
3196
                rol     edx, 5
3197
                add     edx, ecx
3198
                xor     edi, 0FFFFFFFFh
3199
                or      edi, ebp
3200
                add     ecx, [esi+4]
3201
                xor     edi, edx
3202
                rol     ebp, 0Ah
3203
                lea     ecx, [ecx+edi-56AC02B2h]
3204
                mov     edi, ebp
3205
                rol     ecx, 0Ch
3206
                add     ecx, ebx
3207
                xor     edi, 0FFFFFFFFh
3208
                or      edi, edx
3209
                add     ebx, [esi+0Ch]
3210
                xor     edi, ecx
3211
                rol     edx, 0Ah
3212
                lea     ebx, [ebx+edi-56AC02B2h]
3213
                mov     edi, edx
3214
                rol     ebx, 0Dh
3215
                add     ebx, eax
3216
                xor     edi, 0FFFFFFFFh
3217
                or      edi, ecx
3218
                add     eax, [esi+20h]
3219
                xor     edi, ebx
3220
                rol     ecx, 0Ah
3221
                lea     eax, [eax+edi-56AC02B2h]
3222
                mov     edi, ecx
3223
                rol     eax, 0Eh
3224
                add     eax, ebp
3225
                xor     edi, 0FFFFFFFFh
3226
                or      edi, ebx
3227
                add     ebp, [esi+2Ch]
3228
                xor     edi, eax
3229
                rol     ebx, 0Ah
3230
                lea     ebp, [ebp+edi-56AC02B2h]
3231
                mov     edi, ebx
3232
                rol     ebp, 0Bh
3233
                add     ebp, edx
3234
                xor     edi, 0FFFFFFFFh
3235
                or      edi, eax
3236
                add     edx, [esi+18h]
3237
                xor     edi, ebp
3238
                rol     eax, 0Ah
3239
                lea     edx, [edx+edi-56AC02B2h]
3240
                mov     edi, eax
3241
                rol     edx, 8
3242
                add     edx, ecx
3243
                xor     edi, 0FFFFFFFFh
3244
                or      edi, ebp
3245
                add     ecx, [esi+3Ch]
3246
                xor     edi, edx
3247
                rol     ebp, 0Ah
3248
                lea     ecx, [ecx+edi-56AC02B2h]
3249
                mov     edi, ebp
3250
                rol     ecx, 5
3251
                add     ecx, ebx
3252
                xor     edi, 0FFFFFFFFh
3253
                or      edi, edx
3254
                add     ebx, [esi+34h]
3255
                xor     edi, ecx
3256
                rol     edx, 0Ah
3257
                lea     ebx, [ebx+edi-56AC02B2h]
3258
                mov     edi, edx
3259
                rol     ebx, 6
3260
                add     ebx, eax
3261
                mov     edi, [esp+14h]
3262
                mov     [esp], eax
3263
                mov     [esp+4], ebx
3264
                mov     eax, [edi]
3265
                mov     ebx, [edi+4]
3266
                mov     [esp+8], ecx
3267
                mov     [esp+0Ch], edx
3268
                mov     ecx, [edi+8]
3269
                mov     edx, [edi+0Ch]
3270
                mov     [esp+10h], ebp
3271
                mov     ebp, [edi+10h]
3272
                mov     edi, edx
3273
                xor     edi, 0FFFFFFFFh
3274
                or      edi, ecx
3275
                add     eax, [esi+14h]
3276
                xor     edi, ebx
3277
                rol     ecx, 0Ah
3278
                lea     eax, [eax+edi+50A28BE6h]
3279
                mov     edi, ecx
3280
                rol     eax, 8
3281
                add     eax, ebp
3282
                xor     edi, 0FFFFFFFFh
3283
                or      edi, ebx
3284
                add     ebp, [esi+38h]
3285
                xor     edi, eax
3286
                rol     ebx, 0Ah
3287
                lea     ebp, [ebp+edi+50A28BE6h]
3288
                mov     edi, ebx
3289
                rol     ebp, 9
3290
                add     ebp, edx
3291
                xor     edi, 0FFFFFFFFh
3292
                or      edi, eax
3293
                add     edx, [esi+1Ch]
3294
                xor     edi, ebp
3295
                rol     eax, 0Ah
3296
                lea     edx, [edx+edi+50A28BE6h]
3297
                mov     edi, eax
3298
                rol     edx, 9
3299
                add     edx, ecx
3300
                xor     edi, 0FFFFFFFFh
3301
                or      edi, ebp
3302
                add     ecx, [esi]
3303
                xor     edi, edx
3304
                rol     ebp, 0Ah
3305
                lea     ecx, [ecx+edi+50A28BE6h]
3306
                mov     edi, ebp
3307
                rol     ecx, 0Bh
3308
                add     ecx, ebx
3309
                xor     edi, 0FFFFFFFFh
3310
                or      edi, edx
3311
                add     ebx, [esi+24h]
3312
                xor     edi, ecx
3313
                rol     edx, 0Ah
3314
                lea     ebx, [ebx+edi+50A28BE6h]
3315
                mov     edi, edx
3316
                rol     ebx, 0Dh
3317
                add     ebx, eax
3318
                xor     edi, 0FFFFFFFFh
3319
                or      edi, ecx
3320
                add     eax, [esi+8]
3321
                xor     edi, ebx
3322
                rol     ecx, 0Ah
3323
                lea     eax, [eax+edi+50A28BE6h]
3324
                mov     edi, ecx
3325
                rol     eax, 0Fh
3326
                add     eax, ebp
3327
                xor     edi, 0FFFFFFFFh
3328
                or      edi, ebx
3329
                add     ebp, [esi+2Ch]
3330
                xor     edi, eax
3331
                rol     ebx, 0Ah
3332
                lea     ebp, [ebp+edi+50A28BE6h]
3333
                mov     edi, ebx
3334
                rol     ebp, 0Fh
3335
                add     ebp, edx
3336
                xor     edi, 0FFFFFFFFh
3337
                or      edi, eax
3338
                add     edx, [esi+10h]
3339
                xor     edi, ebp
3340
                rol     eax, 0Ah
3341
                lea     edx, [edx+edi+50A28BE6h]
3342
                mov     edi, eax
3343
                rol     edx, 5
3344
                add     edx, ecx
3345
                xor     edi, 0FFFFFFFFh
3346
                or      edi, ebp
3347
                add     ecx, [esi+34h]
3348
                xor     edi, edx
3349
                rol     ebp, 0Ah
3350
                lea     ecx, [ecx+edi+50A28BE6h]
3351
                mov     edi, ebp
3352
                rol     ecx, 7
3353
                add     ecx, ebx
3354
                xor     edi, 0FFFFFFFFh
3355
                or      edi, edx
3356
                add     ebx, [esi+18h]
3357
                xor     edi, ecx
3358
                rol     edx, 0Ah
3359
                lea     ebx, [ebx+edi+50A28BE6h]
3360
                mov     edi, edx
3361
                rol     ebx, 7
3362
                add     ebx, eax
3363
                xor     edi, 0FFFFFFFFh
3364
                or      edi, ecx
3365
                add     eax, [esi+3Ch]
3366
                xor     edi, ebx
3367
                rol     ecx, 0Ah
3368
                lea     eax, [eax+edi+50A28BE6h]
3369
                mov     edi, ecx
3370
                rol     eax, 8
3371
                add     eax, ebp
3372
                xor     edi, 0FFFFFFFFh
3373
                or      edi, ebx
3374
                add     ebp, [esi+20h]
3375
                xor     edi, eax
3376
                rol     ebx, 0Ah
3377
                lea     ebp, [ebp+edi+50A28BE6h]
3378
                mov     edi, ebx
3379
                rol     ebp, 0Bh
3380
                add     ebp, edx
3381
                xor     edi, 0FFFFFFFFh
3382
                or      edi, eax
3383
                add     edx, [esi+4]
3384
                xor     edi, ebp
3385
                rol     eax, 0Ah
3386
                lea     edx, [edx+edi+50A28BE6h]
3387
                mov     edi, eax
3388
                rol     edx, 0Eh
3389
                add     edx, ecx
3390
                xor     edi, 0FFFFFFFFh
3391
                or      edi, ebp
3392
                add     ecx, [esi+28h]
3393
                xor     edi, edx
3394
                rol     ebp, 0Ah
3395
                lea     ecx, [ecx+edi+50A28BE6h]
3396
                mov     edi, ebp
3397
                rol     ecx, 0Eh
3398
                add     ecx, ebx
3399
                xor     edi, 0FFFFFFFFh
3400
                or      edi, edx
3401
                add     ebx, [esi+0Ch]
3402
                xor     edi, ecx
3403
                rol     edx, 0Ah
3404
                lea     ebx, [ebx+edi+50A28BE6h]
3405
                mov     edi, edx
3406
                rol     ebx, 0Ch
3407
                add     ebx, eax
3408
                xor     edi, 0FFFFFFFFh
3409
                or      edi, ecx
3410
                add     eax, [esi+30h]
3411
                xor     edi, ebx
3412
                rol     ecx, 0Ah
3413
                lea     eax, [eax+edi+50A28BE6h]
3414
                mov     edi, ecx
3415
                rol     eax, 6
3416
                add     eax, ebp
3417
                mov     edi, ebx
3418
                xor     edi, eax
3419
                and     edi, ecx
3420
                add     ebp, [esi+18h]
3421
                xor     edi, ebx
3422
                rol     ebx, 0Ah
3423
                lea     ebp, [ebp+edi+5C4DD124h]
3424
                mov     edi, eax
3425
                rol     ebp, 9
3426
                add     ebp, edx
3427
                xor     edi, ebp
3428
                and     edi, ebx
3429
                add     edx, [esi+2Ch]
3430
                xor     edi, eax
3431
                rol     eax, 0Ah
3432
                lea     edx, [edx+edi+5C4DD124h]
3433
                mov     edi, ebp
3434
                rol     edx, 0Dh
3435
                add     edx, ecx
3436
                xor     edi, edx
3437
                and     edi, eax
3438
                add     ecx, [esi+0Ch]
3439
                xor     edi, ebp
3440
                rol     ebp, 0Ah
3441
                lea     ecx, [ecx+edi+5C4DD124h]
3442
                mov     edi, edx
3443
                rol     ecx, 0Fh
3444
                add     ecx, ebx
3445
                xor     edi, ecx
3446
                and     edi, ebp
3447
                add     ebx, [esi+1Ch]
3448
                xor     edi, edx
3449
                rol     edx, 0Ah
3450
                lea     ebx, [ebx+edi+5C4DD124h]
3451
                mov     edi, ecx
3452
                rol     ebx, 7
3453
                add     ebx, eax
3454
                xor     edi, ebx
3455
                and     edi, edx
3456
                add     eax, [esi]
3457
                xor     edi, ecx
3458
                rol     ecx, 0Ah
3459
                lea     eax, [eax+edi+5C4DD124h]
3460
                mov     edi, ebx
3461
                rol     eax, 0Ch
3462
                add     eax, ebp
3463
                xor     edi, eax
3464
                and     edi, ecx
3465
                add     ebp, [esi+34h]
3466
                xor     edi, ebx
3467
                rol     ebx, 0Ah
3468
                lea     ebp, [ebp+edi+5C4DD124h]
3469
                mov     edi, eax
3470
                rol     ebp, 8
3471
                add     ebp, edx
3472
                xor     edi, ebp
3473
                and     edi, ebx
3474
                add     edx, [esi+14h]
3475
                xor     edi, eax
3476
                rol     eax, 0Ah
3477
                lea     edx, [edx+edi+5C4DD124h]
3478
                mov     edi, ebp
3479
                rol     edx, 9
3480
                add     edx, ecx
3481
                xor     edi, edx
3482
                and     edi, eax
3483
                add     ecx, [esi+28h]
3484
                xor     edi, ebp
3485
                rol     ebp, 0Ah
3486
                lea     ecx, [ecx+edi+5C4DD124h]
3487
                mov     edi, edx
3488
                rol     ecx, 0Bh
3489
                add     ecx, ebx
3490
                xor     edi, ecx
3491
                and     edi, ebp
3492
                add     ebx, [esi+38h]
3493
                xor     edi, edx
3494
                rol     edx, 0Ah
3495
                lea     ebx, [ebx+edi+5C4DD124h]
3496
                mov     edi, ecx
3497
                rol     ebx, 7
3498
                add     ebx, eax
3499
                xor     edi, ebx
3500
                and     edi, edx
3501
                add     eax, [esi+3Ch]
3502
                xor     edi, ecx
3503
                rol     ecx, 0Ah
3504
                lea     eax, [eax+edi+5C4DD124h]
3505
                mov     edi, ebx
3506
                rol     eax, 7
3507
                add     eax, ebp
3508
                xor     edi, eax
3509
                and     edi, ecx
3510
                add     ebp, [esi+20h]
3511
                xor     edi, ebx
3512
                rol     ebx, 0Ah
3513
                lea     ebp, [ebp+edi+5C4DD124h]
3514
                mov     edi, eax
3515
                rol     ebp, 0Ch
3516
                add     ebp, edx
3517
                xor     edi, ebp
3518
                and     edi, ebx
3519
                add     edx, [esi+30h]
3520
                xor     edi, eax
3521
                rol     eax, 0Ah
3522
                lea     edx, [edx+edi+5C4DD124h]
3523
                mov     edi, ebp
3524
                rol     edx, 7
3525
                add     edx, ecx
3526
                xor     edi, edx
3527
                and     edi, eax
3528
                add     ecx, [esi+10h]
3529
                xor     edi, ebp
3530
                rol     ebp, 0Ah
3531
                lea     ecx, [ecx+edi+5C4DD124h]
3532
                mov     edi, edx
3533
                rol     ecx, 6
3534
                add     ecx, ebx
3535
                xor     edi, ecx
3536
                and     edi, ebp
3537
                add     ebx, [esi+24h]
3538
                xor     edi, edx
3539
                rol     edx, 0Ah
3540
                lea     ebx, [ebx+edi+5C4DD124h]
3541
                mov     edi, ecx
3542
                rol     ebx, 0Fh
3543
                add     ebx, eax
3544
                xor     edi, ebx
3545
                and     edi, edx
3546
                add     eax, [esi+4]
3547
                xor     edi, ecx
3548
                rol     ecx, 0Ah
3549
                lea     eax, [eax+edi+5C4DD124h]
3550
                mov     edi, ebx
3551
                rol     eax, 0Dh
3552
                add     eax, ebp
3553
                xor     edi, eax
3554
                and     edi, ecx
3555
                add     ebp, [esi+8]
3556
                xor     edi, ebx
3557
                rol     ebx, 0Ah
3558
                lea     ebp, [ebp+edi+5C4DD124h]
3559
                mov     edi, eax
3560
                rol     ebp, 0Bh
3561
                add     ebp, edx
3562
                mov     edi, eax
3563
                xor     edi, 0FFFFFFFFh
3564
                or      edi, ebp
3565
                add     edx, [esi+3Ch]
3566
                xor     edi, ebx
3567
                rol     eax, 0Ah
3568
                lea     edx, [edx+edi+6D703EF3h]
3569
                mov     edi, ebp
3570
                rol     edx, 9
3571
                xor     edi, 0FFFFFFFFh
3572
                add     edx, ecx
3573
                or      edi, edx
3574
                add     ecx, [esi+14h]
3575
                xor     edi, eax
3576
                rol     ebp, 0Ah
3577
                lea     ecx, [ecx+edi+6D703EF3h]
3578
                mov     edi, edx
3579
                rol     ecx, 7
3580
                xor     edi, 0FFFFFFFFh
3581
                add     ecx, ebx
3582
                or      edi, ecx
3583
                add     ebx, [esi+4]
3584
                xor     edi, ebp
3585
                rol     edx, 0Ah
3586
                lea     ebx, [ebx+edi+6D703EF3h]
3587
                mov     edi, ecx
3588
                rol     ebx, 0Fh
3589
                xor     edi, 0FFFFFFFFh
3590
                add     ebx, eax
3591
                or      edi, ebx
3592
                add     eax, [esi+0Ch]
3593
                xor     edi, edx
3594
                rol     ecx, 0Ah
3595
                lea     eax, [eax+edi+6D703EF3h]
3596
                mov     edi, ebx
3597
                rol     eax, 0Bh
3598
                xor     edi, 0FFFFFFFFh
3599
                add     eax, ebp
3600
                or      edi, eax
3601
                add     ebp, [esi+1Ch]
3602
                xor     edi, ecx
3603
                rol     ebx, 0Ah
3604
                lea     ebp, [ebp+edi+6D703EF3h]
3605
                mov     edi, eax
3606
                rol     ebp, 8
3607
                xor     edi, 0FFFFFFFFh
3608
                add     ebp, edx
3609
                or      edi, ebp
3610
                add     edx, [esi+38h]
3611
                xor     edi, ebx
3612
                rol     eax, 0Ah
3613
                lea     edx, [edx+edi+6D703EF3h]
3614
                mov     edi, ebp
3615
                rol     edx, 6
3616
                xor     edi, 0FFFFFFFFh
3617
                add     edx, ecx
3618
                or      edi, edx
3619
                add     ecx, [esi+18h]
3620
                xor     edi, eax
3621
                rol     ebp, 0Ah
3622
                lea     ecx, [ecx+edi+6D703EF3h]
3623
                mov     edi, edx
3624
                rol     ecx, 6
3625
                xor     edi, 0FFFFFFFFh
3626
                add     ecx, ebx
3627
                or      edi, ecx
3628
                add     ebx, [esi+24h]
3629
                xor     edi, ebp
3630
                rol     edx, 0Ah
3631
                lea     ebx, [ebx+edi+6D703EF3h]
3632
                mov     edi, ecx
3633
                rol     ebx, 0Eh
3634
                xor     edi, 0FFFFFFFFh
3635
                add     ebx, eax
3636
                or      edi, ebx
3637
                add     eax, [esi+2Ch]
3638
                xor     edi, edx
3639
                rol     ecx, 0Ah
3640
                lea     eax, [eax+edi+6D703EF3h]
3641
                mov     edi, ebx
3642
                rol     eax, 0Ch
3643
                xor     edi, 0FFFFFFFFh
3644
                add     eax, ebp
3645
                or      edi, eax
3646
                add     ebp, [esi+20h]
3647
                xor     edi, ecx
3648
                rol     ebx, 0Ah
3649
                lea     ebp, [ebp+edi+6D703EF3h]
3650
                mov     edi, eax
3651
                rol     ebp, 0Dh
3652
                xor     edi, 0FFFFFFFFh
3653
                add     ebp, edx
3654
                or      edi, ebp
3655
                add     edx, [esi+30h]
3656
                xor     edi, ebx
3657
                rol     eax, 0Ah
3658
                lea     edx, [edx+edi+6D703EF3h]
3659
                mov     edi, ebp
3660
                rol     edx, 5
3661
                xor     edi, 0FFFFFFFFh
3662
                add     edx, ecx
3663
                or      edi, edx
3664
                add     ecx, [esi+8]
3665
                xor     edi, eax
3666
                rol     ebp, 0Ah
3667
                lea     ecx, [ecx+edi+6D703EF3h]
3668
                mov     edi, edx
3669
                rol     ecx, 0Eh
3670
                xor     edi, 0FFFFFFFFh
3671
                add     ecx, ebx
3672
                or      edi, ecx
3673
                add     ebx, [esi+28h]
3674
                xor     edi, ebp
3675
                rol     edx, 0Ah
3676
                lea     ebx, [ebx+edi+6D703EF3h]
3677
                mov     edi, ecx
3678
                rol     ebx, 0Dh
3679
                xor     edi, 0FFFFFFFFh
3680
                add     ebx, eax
3681
                or      edi, ebx
3682
                add     eax, [esi]
3683
                xor     edi, edx
3684
                rol     ecx, 0Ah
3685
                lea     eax, [eax+edi+6D703EF3h]
3686
                mov     edi, ebx
3687
                rol     eax, 0Dh
3688
                xor     edi, 0FFFFFFFFh
3689
                add     eax, ebp
3690
                or      edi, eax
3691
                add     ebp, [esi+10h]
3692
                xor     edi, ecx
3693
                rol     ebx, 0Ah
3694
                lea     ebp, [ebp+edi+6D703EF3h]
3695
                mov     edi, eax
3696
                rol     ebp, 7
3697
                xor     edi, 0FFFFFFFFh
3698
                add     ebp, edx
3699
                or      edi, ebp
3700
                add     edx, [esi+34h]
3701
                xor     edi, ebx
3702
                rol     eax, 0Ah
3703
                lea     edx, [edx+edi+6D703EF3h]
3704
                mov     edi, ebp
3705
                rol     edx, 5
3706
                xor     edi, 0FFFFFFFFh
3707
                add     edx, ecx
3708
                mov     edi, eax
3709
                xor     edi, ebp
3710
                add     ecx, [esi+20h]
3711
                and     edi, edx
3712
                xor     edi, eax
3713
                rol     ebp, 0Ah
3714
                lea     ecx, [ecx+edi+7A6D76E9h]
3715
                mov     edi, ebp
3716
                rol     ecx, 0Fh
3717
                add     ecx, ebx
3718
                xor     edi, edx
3719
                add     ebx, [esi+18h]
3720
                and     edi, ecx
3721
                xor     edi, ebp
3722
                rol     edx, 0Ah
3723
                lea     ebx, [ebx+edi+7A6D76E9h]
3724
                mov     edi, edx
3725
                rol     ebx, 5
3726
                add     ebx, eax
3727
                xor     edi, ecx
3728
                add     eax, [esi+10h]
3729
                and     edi, ebx
3730
                xor     edi, edx
3731
                rol     ecx, 0Ah
3732
                lea     eax, [eax+edi+7A6D76E9h]
3733
                mov     edi, ecx
3734
                rol     eax, 8
3735
                add     eax, ebp
3736
                xor     edi, ebx
3737
                add     ebp, [esi+4]
3738
                and     edi, eax
3739
                xor     edi, ecx
3740
                rol     ebx, 0Ah
3741
                lea     ebp, [ebp+edi+7A6D76E9h]
3742
                mov     edi, ebx
3743
                rol     ebp, 0Bh
3744
                add     ebp, edx
3745
                xor     edi, eax
3746
                add     edx, [esi+0Ch]
3747
                and     edi, ebp
3748
                xor     edi, ebx
3749
                rol     eax, 0Ah
3750
                lea     edx, [edx+edi+7A6D76E9h]
3751
                mov     edi, eax
3752
                rol     edx, 0Eh
3753
                add     edx, ecx
3754
                xor     edi, ebp
3755
                add     ecx, [esi+2Ch]
3756
                and     edi, edx
3757
                xor     edi, eax
3758
                rol     ebp, 0Ah
3759
                lea     ecx, [ecx+edi+7A6D76E9h]
3760
                mov     edi, ebp
3761
                rol     ecx, 0Eh
3762
                add     ecx, ebx
3763
                xor     edi, edx
3764
                add     ebx, [esi+3Ch]
3765
                and     edi, ecx
3766
                xor     edi, ebp
3767
                rol     edx, 0Ah
3768
                lea     ebx, [ebx+edi+7A6D76E9h]
3769
                mov     edi, edx
3770
                rol     ebx, 6
3771
                add     ebx, eax
3772
                xor     edi, ecx
3773
                add     eax, [esi]
3774
                and     edi, ebx
3775
                xor     edi, edx
3776
                rol     ecx, 0Ah
3777
                lea     eax, [eax+edi+7A6D76E9h]
3778
                mov     edi, ecx
3779
                rol     eax, 0Eh
3780
                add     eax, ebp
3781
                xor     edi, ebx
3782
                add     ebp, [esi+14h]
3783
                and     edi, eax
3784
                xor     edi, ecx
3785
                rol     ebx, 0Ah
3786
                lea     ebp, [ebp+edi+7A6D76E9h]
3787
                mov     edi, ebx
3788
                rol     ebp, 6
3789
                add     ebp, edx
3790
                xor     edi, eax
3791
                add     edx, [esi+30h]
3792
                and     edi, ebp
3793
                xor     edi, ebx
3794
                rol     eax, 0Ah
3795
                lea     edx, [edx+edi+7A6D76E9h]
3796
                mov     edi, eax
3797
                rol     edx, 9
3798
                add     edx, ecx
3799
                xor     edi, ebp
3800
                add     ecx, [esi+8]
3801
                and     edi, edx
3802
                xor     edi, eax
3803
                rol     ebp, 0Ah
3804
                lea     ecx, [ecx+edi+7A6D76E9h]
3805
                mov     edi, ebp
3806
                rol     ecx, 0Ch
3807
                add     ecx, ebx
3808
                xor     edi, edx
3809
                add     ebx, [esi+34h]
3810
                and     edi, ecx
3811
                xor     edi, ebp
3812
                rol     edx, 0Ah
3813
                lea     ebx, [ebx+edi+7A6D76E9h]
3814
                mov     edi, edx
3815
                rol     ebx, 9
3816
                add     ebx, eax
3817
                xor     edi, ecx
3818
                add     eax, [esi+24h]
3819
                and     edi, ebx
3820
                xor     edi, edx
3821
                rol     ecx, 0Ah
3822
                lea     eax, [eax+edi+7A6D76E9h]
3823
                mov     edi, ecx
3824
                rol     eax, 0Ch
3825
                add     eax, ebp
3826
                xor     edi, ebx
3827
                add     ebp, [esi+1Ch]
3828
                and     edi, eax
3829
                xor     edi, ecx
3830
                rol     ebx, 0Ah
3831
                lea     ebp, [ebp+edi+7A6D76E9h]
3832
                mov     edi, ebx
3833
                rol     ebp, 5
3834
                add     ebp, edx
3835
                xor     edi, eax
3836
                add     edx, [esi+28h]
3837
                and     edi, ebp
3838
                xor     edi, ebx
3839
                rol     eax, 0Ah
3840
                lea     edx, [edx+edi+7A6D76E9h]
3841
                mov     edi, eax
3842
                rol     edx, 0Fh
3843
                add     edx, ecx
3844
                xor     edi, ebp
3845
                add     ecx, [esi+38h]
3846
                and     edi, edx
3847
                xor     edi, eax
3848
                rol     ebp, 0Ah
3849
                lea     ecx, [ecx+edi+7A6D76E9h]
3850
                mov     edi, ebp
3851
                rol     ecx, 8
3852
                add     ecx, ebx
3853
                xor     edi, edx
3854
                xor     edi, ecx
3855
                add     ebx, [esi+30h]
3856
                rol     edx, 0Ah
3857
                add     ebx, edi
3858
                mov     edi, edx
3859
                rol     ebx, 8
3860
                add     ebx, eax
3861
                xor     edi, ecx
3862
                xor     edi, ebx
3863
                add     eax, [esi+3Ch]
3864
                rol     ecx, 0Ah
3865
                add     eax, edi
3866
                mov     edi, ecx
3867
                rol     eax, 5
3868
                add     eax, ebp
3869
                xor     edi, ebx
3870
                xor     edi, eax
3871
                add     ebp, [esi+28h]
3872
                rol     ebx, 0Ah
3873
                add     ebp, edi
3874
                mov     edi, ebx
3875
                rol     ebp, 0Ch
3876
                add     ebp, edx
3877
                xor     edi, eax
3878
                xor     edi, ebp
3879
                add     edx, [esi+10h]
3880
                rol     eax, 0Ah
3881
                add     edx, edi
3882
                mov     edi, eax
3883
                rol     edx, 9
3884
                add     edx, ecx
3885
                xor     edi, ebp
3886
                xor     edi, edx
3887
                add     ecx, [esi+4]
3888
                rol     ebp, 0Ah
3889
                add     ecx, edi
3890
                mov     edi, ebp
3891
                rol     ecx, 0Ch
3892
                add     ecx, ebx
3893
                xor     edi, edx
3894
                xor     edi, ecx
3895
                add     ebx, [esi+14h]
3896
                rol     edx, 0Ah
3897
                add     ebx, edi
3898
                mov     edi, edx
3899
                rol     ebx, 5
3900
                add     ebx, eax
3901
                xor     edi, ecx
3902
                xor     edi, ebx
3903
                add     eax, [esi+20h]
3904
                rol     ecx, 0Ah
3905
                add     eax, edi
3906
                mov     edi, ecx
3907
                rol     eax, 0Eh
3908
                add     eax, ebp
3909
                xor     edi, ebx
3910
                xor     edi, eax
3911
                add     ebp, [esi+1Ch]
3912
                rol     ebx, 0Ah
3913
                add     ebp, edi
3914
                mov     edi, ebx
3915
                rol     ebp, 6
3916
                add     ebp, edx
3917
                xor     edi, eax
3918
                xor     edi, ebp
3919
                add     edx, [esi+18h]
3920
                rol     eax, 0Ah
3921
                add     edx, edi
3922
                mov     edi, eax
3923
                rol     edx, 8
3924
                add     edx, ecx
3925
                xor     edi, ebp
3926
                xor     edi, edx
3927
                add     ecx, [esi+8]
3928
                rol     ebp, 0Ah
3929
                add     ecx, edi
3930
                mov     edi, ebp
3931
                rol     ecx, 0Dh
3932
                add     ecx, ebx
3933
                xor     edi, edx
3934
                xor     edi, ecx
3935
                add     ebx, [esi+34h]
3936
                rol     edx, 0Ah
3937
                add     ebx, edi
3938
                mov     edi, edx
3939
                rol     ebx, 6
3940
                add     ebx, eax
3941
                xor     edi, ecx
3942
                xor     edi, ebx
3943
                add     eax, [esi+38h]
3944
                rol     ecx, 0Ah
3945
                add     eax, edi
3946
                mov     edi, ecx
3947
                rol     eax, 5
3948
                add     eax, ebp
3949
                xor     edi, ebx
3950
                xor     edi, eax
3951
                add     ebp, [esi]
3952
                rol     ebx, 0Ah
3953
                add     ebp, edi
3954
                mov     edi, ebx
3955
                rol     ebp, 0Fh
3956
                add     ebp, edx
3957
                xor     edi, eax
3958
                xor     edi, ebp
3959
                add     edx, [esi+0Ch]
3960
                rol     eax, 0Ah
3961
                add     edx, edi
3962
                mov     edi, eax
3963
                rol     edx, 0Dh
3964
                add     edx, ecx
3965
                xor     edi, ebp
3966
                xor     edi, edx
3967
                add     ecx, [esi+24h]
3968
                rol     ebp, 0Ah
3969
                add     ecx, edi
3970
                mov     edi, ebp
3971
                rol     ecx, 0Bh
3972
                add     ecx, ebx
3973
                xor     edi, edx
3974
                xor     edi, ecx
3975
                add     ebx, [esi+2Ch]
3976
                rol     edx, 0Ah
3977
                add     ebx, edi
3978
                mov     edi, edx
3979
                rol     ebx, 0Bh
3980
                add     ebx, eax
3981
                mov     edi, [esp+14h]
3982
                add     edx, [esp+8]
3983
                mov     esi, [edi+4]
3984
                add     ebp, [esp+0Ch]
3985
                add     edx, esi
3986
                mov     esi, [esp+10h]
3987
                add     ecx, [edi]
3988
                mov     [edi], edx
3989
                mov     edx, [edi+8]
3990
                add     eax, esi
3991
                mov     esi, [edi+0Ch]
3992
                add     ebp, edx
3993
                mov     edx, [esp]
3994
                mov     [edi+4], ebp
3995
                add     eax, esi
3996
                mov     esi, [edi+10h]
3997
                add     ebx, edx
3998
                mov     edx, [esp+4]
3999
                mov     [edi+8], eax
4000
                add     ebx, esi
4001
                add     ecx, edx
4002
                mov     [edi+0Ch], ebx
4003
                add     esp, 18h
4004
                mov     [edi+10h], ecx
4005
4006
                pop     ebp
4007
                pop     edi
4008
                pop     esi
4009
                pop     ebx
4010
end;
4011
{$ENDIF}
4012
4013
{$IFDEF THash_RipeMD256_asm}
4014
procedure THash_RipeMD256.DoTransform(Buffer: PUInt32Array);
4015
asm
4016
                push    ebx
4017
                push    esi
4018
                push    edi
4019
                lea     edi, [eax].THash_RipeMD256.FDigest
4020
                mov     esi, edx
4021
                push    ebp
4022
4023
                mov     eax, [edi]
4024
                mov     ebx, [edi+4]
4025
                push    edi
4026
                mov     ecx, [edi+8]
4027
                mov     edx, [edi+0Ch]
4028
                add     esp, 0FFFFFFE0h
4029
                mov     edi, ecx
4030
                xor     edi, edx
4031
                mov     ebp, [esi]
4032
                xor     edi, ebx
4033
                add     eax, ebp
4034
                add     eax, edi
4035
                mov     edi, ebx
4036
                rol     eax, 0Bh
4037
                xor     edi, ecx
4038
                mov     ebp, [esi+4]
4039
                xor     edi, eax
4040
                add     edx, ebp
4041
                add     edx, edi
4042
                mov     edi, eax
4043
                rol     edx, 0Eh
4044
                xor     edi, ebx
4045
                mov     ebp, [esi+8]
4046
                xor     edi, edx
4047
                add     ecx, ebp
4048
                add     ecx, edi
4049
                mov     edi, edx
4050
                rol     ecx, 0Fh
4051
                xor     edi, eax
4052
                mov     ebp, [esi+0Ch]
4053
                xor     edi, ecx
4054
                add     ebx, ebp
4055
                add     ebx, edi
4056
                mov     edi, ecx
4057
                rol     ebx, 0Ch
4058
                xor     edi, edx
4059
                mov     ebp, [esi+10h]
4060
                xor     edi, ebx
4061
                add     eax, ebp
4062
                add     eax, edi
4063
                mov     edi, ebx
4064
                rol     eax, 5
4065
                xor     edi, ecx
4066
                mov     ebp, [esi+14h]
4067
                xor     edi, eax
4068
                add     edx, ebp
4069
                add     edx, edi
4070
                mov     edi, eax
4071
                rol     edx, 8
4072
                xor     edi, ebx
4073
                mov     ebp, [esi+18h]
4074
                xor     edi, edx
4075
                add     ecx, ebp
4076
                add     ecx, edi
4077
                mov     edi, edx
4078
                rol     ecx, 7
4079
                xor     edi, eax
4080
                mov     ebp, [esi+1Ch]
4081
                xor     edi, ecx
4082
                add     ebx, ebp
4083
                add     ebx, edi
4084
                mov     edi, ecx
4085
                rol     ebx, 9
4086
                xor     edi, edx
4087
                mov     ebp, [esi+20h]
4088
                xor     edi, ebx
4089
                add     eax, ebp
4090
                add     eax, edi
4091
                mov     edi, ebx
4092
                rol     eax, 0Bh
4093
                xor     edi, ecx
4094
                mov     ebp, [esi+24h]
4095
                xor     edi, eax
4096
                add     edx, ebp
4097
                add     edx, edi
4098
                mov     edi, eax
4099
                rol     edx, 0Dh
4100
                xor     edi, ebx
4101
                mov     ebp, [esi+28h]
4102
                xor     edi, edx
4103
                add     ecx, ebp
4104
                add     ecx, edi
4105
                mov     edi, edx
4106
                rol     ecx, 0Eh
4107
                xor     edi, eax
4108
                mov     ebp, [esi+2Ch]
4109
                xor     edi, ecx
4110
                add     ebx, ebp
4111
                add     ebx, edi
4112
                mov     edi, ecx
4113
                rol     ebx, 0Fh
4114
                xor     edi, edx
4115
                mov     ebp, [esi+30h]
4116
                xor     edi, ebx
4117
                add     eax, ebp
4118
                add     eax, edi
4119
                mov     edi, ebx
4120
                rol     eax, 6
4121
                xor     edi, ecx
4122
                mov     ebp, [esi+34h]
4123
                xor     edi, eax
4124
                add     edx, ebp
4125
                add     edx, edi
4126
                mov     edi, eax
4127
                rol     edx, 7
4128
                xor     edi, ebx
4129
                mov     ebp, [esi+38h]
4130
                xor     edi, edx
4131
                add     ecx, ebp
4132
                add     ecx, edi
4133
                mov     edi, edx
4134
                rol     ecx, 9
4135
                xor     edi, eax
4136
                mov     ebp, [esi+3Ch]
4137
                xor     edi, ecx
4138
                add     ebx, ebp
4139
                add     ebx, edi
4140
                rol     ebx, 8
4141
                mov     edi, [esp+20h]
4142
                mov     [esp], eax
4143
                mov     [esp+4], ebx
4144
                mov     ebp, [esi+14h]
4145
                mov     eax, [edi+10h]
4146
                mov     [esp+8], ecx
4147
                mov     ebx, [edi+14h]
4148
                mov     ecx, [edi+18h]
4149
                mov     [esp+0Ch], edx
4150
                mov     edx, [edi+1Ch]
4151
                mov     edi, ecx
4152
                xor     edi, ebx
4153
                lea     eax, [eax+ebp+50A28BE6h]
4154
                and     edi, edx
4155
                mov     ebp, [esi+38h]
4156
                xor     edi, ecx
4157
                add     eax, edi
4158
                mov     edi, ebx
4159
                rol     eax, 8
4160
                xor     edi, eax
4161
                lea     edx, [edx+ebp+50A28BE6h]
4162
                and     edi, ecx
4163
                mov     ebp, [esi+1Ch]
4164
                xor     edi, ebx
4165
                add     edx, edi
4166
                mov     edi, eax
4167
                rol     edx, 9
4168
                xor     edi, edx
4169
                lea     ecx, [ecx+ebp+50A28BE6h]
4170
                and     edi, ebx
4171
                mov     ebp, [esi]
4172
                xor     edi, eax
4173
                add     ecx, edi
4174
                mov     edi, edx
4175
                rol     ecx, 9
4176
                xor     edi, ecx
4177
                lea     ebx, [ebx+ebp+50A28BE6h]
4178
                and     edi, eax
4179
                mov     ebp, [esi+24h]
4180
                xor     edi, edx
4181
                add     ebx, edi
4182
                mov     edi, ecx
4183
                rol     ebx, 0Bh
4184
                xor     edi, ebx
4185
                lea     eax, [eax+ebp+50A28BE6h]
4186
                and     edi, edx
4187
                mov     ebp, [esi+8]
4188
                xor     edi, ecx
4189
                add     eax, edi
4190
                mov     edi, ebx
4191
                rol     eax, 0Dh
4192
                xor     edi, eax
4193
                lea     edx, [edx+ebp+50A28BE6h]
4194
                and     edi, ecx
4195
                mov     ebp, [esi+2Ch]
4196
                xor     edi, ebx
4197
                add     edx, edi
4198
                mov     edi, eax
4199
                rol     edx, 0Fh
4200
                xor     edi, edx
4201
                lea     ecx, [ecx+ebp+50A28BE6h]
4202
                and     edi, ebx
4203
                mov     ebp, [esi+10h]
4204
                xor     edi, eax
4205
                add     ecx, edi
4206
                mov     edi, edx
4207
                rol     ecx, 0Fh
4208
                xor     edi, ecx
4209
                lea     ebx, [ebx+ebp+50A28BE6h]
4210
                and     edi, eax
4211
                mov     ebp, [esi+34h]
4212
                xor     edi, edx
4213
                add     ebx, edi
4214
                mov     edi, ecx
4215
                rol     ebx, 5
4216
                xor     edi, ebx
4217
                lea     eax, [eax+ebp+50A28BE6h]
4218
                and     edi, edx
4219
                mov     ebp, [esi+18h]
4220
                xor     edi, ecx
4221
                add     eax, edi
4222
                mov     edi, ebx
4223
                rol     eax, 7
4224
                xor     edi, eax
4225
                lea     edx, [edx+ebp+50A28BE6h]
4226
                and     edi, ecx
4227
                mov     ebp, [esi+3Ch]
4228
                xor     edi, ebx
4229
                add     edx, edi
4230
                mov     edi, eax
4231
                rol     edx, 7
4232
                xor     edi, edx
4233
                lea     ecx, [ecx+ebp+50A28BE6h]
4234
                and     edi, ebx
4235
                mov     ebp, [esi+20h]
4236
                xor     edi, eax
4237
                add     ecx, edi
4238
                mov     edi, edx
4239
                rol     ecx, 8
4240
                xor     edi, ecx
4241
                lea     ebx, [ebx+ebp+50A28BE6h]
4242
                and     edi, eax
4243
                mov     ebp, [esi+4]
4244
                xor     edi, edx
4245
                add     ebx, edi
4246
                mov     edi, ecx
4247
                rol     ebx, 0Bh
4248
                xor     edi, ebx
4249
                lea     eax, [eax+ebp+50A28BE6h]
4250
                and     edi, edx
4251
                mov     ebp, [esi+28h]
4252
                xor     edi, ecx
4253
                add     eax, edi
4254
                mov     edi, ebx
4255
                rol     eax, 0Eh
4256
                xor     edi, eax
4257
                lea     edx, [edx+ebp+50A28BE6h]
4258
                and     edi, ecx
4259
                mov     ebp, [esi+0Ch]
4260
                xor     edi, ebx
4261
                add     edx, edi
4262
                mov     edi, eax
4263
                rol     edx, 0Eh
4264
                xor     edi, edx
4265
                lea     ecx, [ecx+ebp+50A28BE6h]
4266
                and     edi, ebx
4267
                mov     ebp, [esi+30h]
4268
                xor     edi, eax
4269
                add     ecx, edi
4270
                mov     edi, edx
4271
                rol     ecx, 0Ch
4272
                xor     edi, ecx
4273
                lea     ebx, [ebx+ebp+50A28BE6h]
4274
                and     edi, eax
4275
                mov     ebp, [esi+1Ch]
4276
                xor     edi, edx
4277
                add     ebx, edi
4278
                rol     ebx, 6
4279
                mov     [esp+14h], ebx
4280
                mov     ebx, [esp+4]
4281
                mov     [esp+1Ch], edx
4282
                mov     [esp+18h], ecx
4283
                mov     edx, [esp]
4284
                mov     ecx, [esp+8]
4285
                mov     [esp+10h], edx
4286
                mov     edx, [esp+0Ch]
4287
                mov     edi, ecx
4288
                xor     edi, edx
4289
                lea     eax, [eax+ebp+5A827999h]
4290
                and     edi, ebx
4291
                mov     ebp, ebx
4292
                xor     edi, edx
4293
                xor     ebp, ecx
4294
                add     eax, edi
4295
                mov     edi, [esi+10h]
4296
                rol     eax, 7
4297
                and     ebp, eax
4298
                lea     edx, [edx+edi+5A827999h]
4299
                xor     ebp, ecx
4300
                mov     edi, eax
4301
                add     edx, ebp
4302
                mov     ebp, [esi+34h]
4303
                rol     edx, 6
4304
                xor     edi, ebx
4305
                lea     ecx, [ecx+ebp+5A827999h]
4306
                and     edi, edx
4307
                mov     ebp, edx
4308
                xor     edi, ebx
4309
                xor     ebp, eax
4310
                add     ecx, edi
4311
                mov     edi, [esi+4]
4312
                rol     ecx, 8
4313
                and     ebp, ecx
4314
                lea     ebx, [ebx+edi+5A827999h]
4315
                xor     ebp, eax
4316
                mov     edi, ecx
4317
                add     ebx, ebp
4318
                mov     ebp, [esi+28h]
4319
                rol     ebx, 0Dh
4320
                xor     edi, edx
4321
                lea     eax, [eax+ebp+5A827999h]
4322
                and     edi, ebx
4323
                mov     ebp, ebx
4324
                xor     edi, edx
4325
                xor     ebp, ecx
4326
                add     eax, edi
4327
                mov     edi, [esi+18h]
4328
                rol     eax, 0Bh
4329
                and     ebp, eax
4330
                lea     edx, [edx+edi+5A827999h]
4331
                xor     ebp, ecx
4332
                mov     edi, eax
4333
                add     edx, ebp
4334
                mov     ebp, [esi+3Ch]
4335
                rol     edx, 9
4336
                xor     edi, ebx
4337
                lea     ecx, [ecx+ebp+5A827999h]
4338
                and     edi, edx
4339
                mov     ebp, edx
4340
                xor     edi, ebx
4341
                xor     ebp, eax
4342
                add     ecx, edi
4343
                mov     edi, [esi+0Ch]
4344
                rol     ecx, 7
4345
                and     ebp, ecx
4346
                lea     ebx, [ebx+edi+5A827999h]
4347
                xor     ebp, eax
4348
                mov     edi, ecx
4349
                add     ebx, ebp
4350
                mov     ebp, [esi+30h]
4351
                rol     ebx, 0Fh
4352
                xor     edi, edx
4353
                lea     eax, [eax+ebp+5A827999h]
4354
                and     edi, ebx
4355
                mov     ebp, ebx
4356
                xor     edi, edx
4357
                xor     ebp, ecx
4358
                add     eax, edi
4359
                mov     edi, [esi]
4360
                rol     eax, 7
4361
                and     ebp, eax
4362
                lea     edx, [edx+edi+5A827999h]
4363
                xor     ebp, ecx
4364
                mov     edi, eax
4365
                add     edx, ebp
4366
                mov     ebp, [esi+24h]
4367
                rol     edx, 0Ch
4368
                xor     edi, ebx
4369
                lea     ecx, [ecx+ebp+5A827999h]
4370
                and     edi, edx
4371
                mov     ebp, edx
4372
                xor     edi, ebx
4373
                xor     ebp, eax
4374
                add     ecx, edi
4375
                mov     edi, [esi+14h]
4376
                rol     ecx, 0Fh
4377
                and     ebp, ecx
4378
                lea     ebx, [ebx+edi+5A827999h]
4379
                xor     ebp, eax
4380
                mov     edi, ecx
4381
                add     ebx, ebp
4382
                mov     ebp, [esi+8]
4383
                rol     ebx, 9
4384
                xor     edi, edx
4385
                lea     eax, [eax+ebp+5A827999h]
4386
                and     edi, ebx
4387
                mov     ebp, ebx
4388
                xor     edi, edx
4389
                xor     ebp, ecx
4390
                add     eax, edi
4391
                mov     edi, [esi+38h]
4392
                rol     eax, 0Bh
4393
                and     ebp, eax
4394
                lea     edx, [edx+edi+5A827999h]
4395
                xor     ebp, ecx
4396
                mov     edi, eax
4397
                add     edx, ebp
4398
                mov     ebp, [esi+2Ch]
4399
                rol     edx, 7
4400
                xor     edi, ebx
4401
                lea     ecx, [ecx+ebp+5A827999h]
4402
                and     edi, edx
4403
                mov     ebp, edx
4404
                xor     edi, ebx
4405
                xor     ebp, eax
4406
                add     ecx, edi
4407
                mov     edi, [esi+20h]
4408
                rol     ecx, 0Dh
4409
                and     ebp, ecx
4410
                lea     ebx, [ebx+edi+5A827999h]
4411
                xor     ebp, eax
4412
                add     ebx, ebp
4413
                mov     ebp, [esi+18h]
4414
                rol     ebx, 0Ch
4415
                mov     [esp], eax
4416
                mov     [esp+4], ebx
4417
                mov     eax, [esp+10h]
4418
                mov     ebx, [esp+14h]
4419
                mov     [esp+8], ecx
4420
                mov     ecx, [esp+18h]
4421
                mov     [esp+0Ch], edx
4422
                mov     edx, [esp+1Ch]
4423
                mov     edi, ecx
4424
                xor     edi, 0FFFFFFFFh
4425
                lea     eax, [eax+ebp+5C4DD124h]
4426
                or      edi, ebx
4427
                mov     ebp, [esi+2Ch]
4428
                xor     edi, edx
4429
                add     eax, edi
4430
                mov     edi, ebx
4431
                rol     eax, 9
4432
                xor     edi, 0FFFFFFFFh
4433
                lea     edx, [edx+ebp+5C4DD124h]
4434
                or      edi, eax
4435
                mov     ebp, [esi+0Ch]
4436
                xor     edi, ecx
4437
                add     edx, edi
4438
                mov     edi, eax
4439
                rol     edx, 0Dh
4440
                xor     edi, 0FFFFFFFFh
4441
                lea     ecx, [ecx+ebp+5C4DD124h]
4442
                or      edi, edx
4443
                mov     ebp, [esi+1Ch]
4444
                xor     edi, ebx
4445
                add     ecx, edi
4446
                mov     edi, edx
4447
                rol     ecx, 0Fh
4448
                xor     edi, 0FFFFFFFFh
4449
                lea     ebx, [ebx+ebp+5C4DD124h]
4450
                or      edi, ecx
4451
                mov     ebp, [esi]
4452
                xor     edi, eax
4453
                add     ebx, edi
4454
                mov     edi, ecx
4455
                rol     ebx, 7
4456
                xor     edi, 0FFFFFFFFh
4457
                lea     eax, [eax+ebp+5C4DD124h]
4458
                or      edi, ebx
4459
                mov     ebp, [esi+34h]
4460
                xor     edi, edx
4461
                add     eax, edi
4462
                mov     edi, ebx
4463
                rol     eax, 0Ch
4464
                xor     edi, 0FFFFFFFFh
4465
                lea     edx, [edx+ebp+5C4DD124h]
4466
                or      edi, eax
4467
                mov     ebp, [esi+14h]
4468
                xor     edi, ecx
4469
                add     edx, edi
4470
                mov     edi, eax
4471
                rol     edx, 8
4472
                xor     edi, 0FFFFFFFFh
4473
                lea     ecx, [ecx+ebp+5C4DD124h]
4474
                or      edi, edx
4475
                mov     ebp, [esi+28h]
4476
                xor     edi, ebx
4477
                add     ecx, edi
4478
                mov     edi, edx
4479
                rol     ecx, 9
4480
                xor     edi, 0FFFFFFFFh
4481
                lea     ebx, [ebx+ebp+5C4DD124h]
4482
                or      edi, ecx
4483
                mov     ebp, [esi+38h]
4484
                xor     edi, eax
4485
                add     ebx, edi
4486
                mov     edi, ecx
4487
                rol     ebx, 0Bh
4488
                xor     edi, 0FFFFFFFFh
4489
                lea     eax, [eax+ebp+5C4DD124h]
4490
                or      edi, ebx
4491
                mov     ebp, [esi+3Ch]
4492
                xor     edi, edx
4493
                add     eax, edi
4494
                mov     edi, ebx
4495
                rol     eax, 7
4496
                xor     edi, 0FFFFFFFFh
4497
                lea     edx, [edx+ebp+5C4DD124h]
4498
                or      edi, eax
4499
                mov     ebp, [esi+20h]
4500
                xor     edi, ecx
4501
                add     edx, edi
4502
                mov     edi, eax
4503
                rol     edx, 7
4504
                xor     edi, 0FFFFFFFFh
4505
                lea     ecx, [ecx+ebp+5C4DD124h]
4506
                or      edi, edx
4507
                mov     ebp, [esi+30h]
4508
                xor     edi, ebx
4509
                add     ecx, edi
4510
                mov     edi, edx
4511
                rol     ecx, 0Ch
4512
                xor     edi, 0FFFFFFFFh
4513
                lea     ebx, [ebx+ebp+5C4DD124h]
4514
                or      edi, ecx
4515
                mov     ebp, [esi+10h]
4516
                xor     edi, eax
4517
                add     ebx, edi
4518
                mov     edi, ecx
4519
                rol     ebx, 7
4520
                xor     edi, 0FFFFFFFFh
4521
                lea     eax, [eax+ebp+5C4DD124h]
4522
                or      edi, ebx
4523
                mov     ebp, [esi+24h]
4524
                xor     edi, edx
4525
                add     eax, edi
4526
                mov     edi, ebx
4527
                rol     eax, 6
4528
                xor     edi, 0FFFFFFFFh
4529
                lea     edx, [edx+ebp+5C4DD124h]
4530
                or      edi, eax
4531
                mov     ebp, [esi+4]
4532
                xor     edi, ecx
4533
                add     edx, edi
4534
                mov     edi, eax
4535
                rol     edx, 0Fh
4536
                xor     edi, 0FFFFFFFFh
4537
                lea     ecx, [ecx+ebp+5C4DD124h]
4538
                or      edi, edx
4539
                mov     ebp, [esi+8]
4540
                xor     edi, ebx
4541
                add     ecx, edi
4542
                mov     edi, edx
4543
                rol     ecx, 0Dh
4544
                xor     edi, 0FFFFFFFFh
4545
                lea     ebx, [ebx+ebp+5C4DD124h]
4546
                or      edi, ecx
4547
                mov     ebp, [esi+0Ch]
4548
                xor     edi, eax
4549
                add     ebx, edi
4550
                rol     ebx, 0Bh
4551
                mov     [esp+10h], eax
4552
                mov     [esp+18h], ecx
4553
                mov     eax, [esp]
4554
                mov     ecx, [esp+8]
4555
                mov     [esp+1Ch], edx
4556
                mov     edx, [esp+4]
4557
                mov     [esp+14h], edx
4558
                mov     edx, [esp+0Ch]
4559
                mov     edi, ecx
4560
                xor     edi, 0FFFFFFFFh
4561
                lea     eax, [eax+ebp+6ED9EBA1h]
4562
                or      edi, ebx
4563
                mov     ebp, [esi+28h]
4564
                xor     edi, edx
4565
                add     eax, edi
4566
                mov     edi, ebx
4567
                rol     eax, 0Bh
4568
                xor     edi, 0FFFFFFFFh
4569
                lea     edx, [edx+ebp+6ED9EBA1h]
4570
                or      edi, eax
4571
                mov     ebp, [esi+38h]
4572
                xor     edi, ecx
4573
                add     edx, edi
4574
                mov     edi, eax
4575
                rol     edx, 0Dh
4576
                xor     edi, 0FFFFFFFFh
4577
                lea     ecx, [ecx+ebp+6ED9EBA1h]
4578
                or      edi, edx
4579
                mov     ebp, [esi+10h]
4580
                xor     edi, ebx
4581
                add     ecx, edi
4582
                mov     edi, edx
4583
                rol     ecx, 6
4584
                xor     edi, 0FFFFFFFFh
4585
                lea     ebx, [ebx+ebp+6ED9EBA1h]
4586
                or      edi, ecx
4587
                mov     ebp, [esi+24h]
4588
                xor     edi, eax
4589
                add     ebx, edi
4590
                mov     edi, ecx
4591
                rol     ebx, 7
4592
                xor     edi, 0FFFFFFFFh
4593
                lea     eax, [eax+ebp+6ED9EBA1h]
4594
                or      edi, ebx
4595
                mov     ebp, [esi+3Ch]
4596
                xor     edi, edx
4597
                add     eax, edi
4598
                mov     edi, ebx
4599
                rol     eax, 0Eh
4600
                xor     edi, 0FFFFFFFFh
4601
                lea     edx, [edx+ebp+6ED9EBA1h]
4602
                or      edi, eax
4603
                mov     ebp, [esi+20h]
4604
                xor     edi, ecx
4605
                add     edx, edi
4606
                mov     edi, eax
4607
                rol     edx, 9
4608
                xor     edi, 0FFFFFFFFh
4609
                lea     ecx, [ecx+ebp+6ED9EBA1h]
4610
                or      edi, edx
4611
                mov     ebp, [esi+4]
4612
                xor     edi, ebx
4613
                add     ecx, edi
4614
                mov     edi, edx
4615
                rol     ecx, 0Dh
4616
                xor     edi, 0FFFFFFFFh
4617
                lea     ebx, [ebx+ebp+6ED9EBA1h]
4618
                or      edi, ecx
4619
                mov     ebp, [esi+8]
4620
                xor     edi, eax
4621
                add     ebx, edi
4622
                mov     edi, ecx
4623
                rol     ebx, 0Fh
4624
                xor     edi, 0FFFFFFFFh
4625
                lea     eax, [eax+ebp+6ED9EBA1h]
4626
                or      edi, ebx
4627
                mov     ebp, [esi+1Ch]
4628
                xor     edi, edx
4629
                add     eax, edi
4630
                mov     edi, ebx
4631
                rol     eax, 0Eh
4632
                xor     edi, 0FFFFFFFFh
4633
                lea     edx, [edx+ebp+6ED9EBA1h]
4634
                or      edi, eax
4635
                mov     ebp, [esi]
4636
                xor     edi, ecx
4637
                add     edx, edi
4638
                mov     edi, eax
4639
                rol     edx, 8
4640
                xor     edi, 0FFFFFFFFh
4641
                lea     ecx, [ecx+ebp+6ED9EBA1h]
4642
                or      edi, edx
4643
                mov     ebp, [esi+18h]
4644
                xor     edi, ebx
4645
                add     ecx, edi
4646
                mov     edi, edx
4647
                rol     ecx, 0Dh
4648
                xor     edi, 0FFFFFFFFh
4649
                lea     ebx, [ebx+ebp+6ED9EBA1h]
4650
                or      edi, ecx
4651
                mov     ebp, [esi+34h]
4652
                xor     edi, eax
4653
                add     ebx, edi
4654
                mov     edi, ecx
4655
                rol     ebx, 6
4656
                xor     edi, 0FFFFFFFFh
4657
                lea     eax, [eax+ebp+6ED9EBA1h]
4658
                or      edi, ebx
4659
                mov     ebp, [esi+2Ch]
4660
                xor     edi, edx
4661
                add     eax, edi
4662
                mov     edi, ebx
4663
                rol     eax, 5
4664
                xor     edi, 0FFFFFFFFh
4665
                lea     edx, [edx+ebp+6ED9EBA1h]
4666
                or      edi, eax
4667
                mov     ebp, [esi+14h]
4668
                xor     edi, ecx
4669
                add     edx, edi
4670
                mov     edi, eax
4671
                rol     edx, 0Ch
4672
                xor     edi, 0FFFFFFFFh
4673
                lea     ecx, [ecx+ebp+6ED9EBA1h]
4674
                or      edi, edx
4675
                mov     ebp, [esi+30h]
4676
                xor     edi, ebx
4677
                add     ecx, edi
4678
                mov     edi, edx
4679
                rol     ecx, 7
4680
                xor     edi, 0FFFFFFFFh
4681
                lea     ebx, [ebx+ebp+6ED9EBA1h]
4682
                or      edi, ecx
4683
                mov     ebp, [esi+3Ch]
4684
                xor     edi, eax
4685
                add     ebx, edi
4686
                rol     ebx, 5
4687
                mov     [esp], eax
4688
                mov     [esp+4], ebx
4689
                mov     eax, [esp+10h]
4690
                mov     ebx, [esp+14h]
4691
                mov     [esp+8], ecx
4692
                mov     ecx, [esp+18h]
4693
                mov     [esp+0Ch], edx
4694
                mov     edx, [esp+1Ch]
4695
                mov     edi, ecx
4696
                xor     edi, edx
4697
                lea     eax, [eax+ebp+6D703EF3h]
4698
                and     edi, ebx
4699
                mov     ebp, ebx
4700
                xor     edi, edx
4701
                xor     ebp, ecx
4702
                add     eax, edi
4703
                mov     edi, [esi+14h]
4704
                rol     eax, 9
4705
                and     ebp, eax
4706
                lea     edx, [edx+edi+6D703EF3h]
4707
                xor     ebp, ecx
4708
                mov     edi, eax
4709
                add     edx, ebp
4710
                mov     ebp, [esi+4]
4711
                rol     edx, 7
4712
                xor     edi, ebx
4713
                lea     ecx, [ecx+ebp+6D703EF3h]
4714
                and     edi, edx
4715
                mov     ebp, edx
4716
                xor     edi, ebx
4717
                xor     ebp, eax
4718
                add     ecx, edi
4719
                mov     edi, [esi+0Ch]
4720
                rol     ecx, 0Fh
4721
                and     ebp, ecx
4722
                lea     ebx, [ebx+edi+6D703EF3h]
4723
                xor     ebp, eax
4724
                mov     edi, ecx
4725
                add     ebx, ebp
4726
                mov     ebp, [esi+1Ch]
4727
                rol     ebx, 0Bh
4728
                xor     edi, edx
4729
                lea     eax, [eax+ebp+6D703EF3h]
4730
                and     edi, ebx
4731
                mov     ebp, ebx
4732
                xor     edi, edx
4733
                xor     ebp, ecx
4734
                add     eax, edi
4735
                mov     edi, [esi+38h]
4736
                rol     eax, 8
4737
                and     ebp, eax
4738
                lea     edx, [edx+edi+6D703EF3h]
4739
                xor     ebp, ecx
4740
                mov     edi, eax
4741
                add     edx, ebp
4742
                mov     ebp, [esi+18h]
4743
                rol     edx, 6
4744
                xor     edi, ebx
4745
                lea     ecx, [ecx+ebp+6D703EF3h]
4746
                and     edi, edx
4747
                mov     ebp, edx
4748
                xor     edi, ebx
4749
                xor     ebp, eax
4750
                add     ecx, edi
4751
                mov     edi, [esi+24h]
4752
                rol     ecx, 6
4753
                and     ebp, ecx
4754
                lea     ebx, [ebx+edi+6D703EF3h]
4755
                xor     ebp, eax
4756
                mov     edi, ecx
4757
                add     ebx, ebp
4758
                mov     ebp, [esi+2Ch]
4759
                rol     ebx, 0Eh
4760
                xor     edi, edx
4761
                lea     eax, [eax+ebp+6D703EF3h]
4762
                and     edi, ebx
4763
                mov     ebp, ebx
4764
                xor     edi, edx
4765
                xor     ebp, ecx
4766
                add     eax, edi
4767
                mov     edi, [esi+20h]
4768
                rol     eax, 0Ch
4769
                and     ebp, eax
4770
                lea     edx, [edx+edi+6D703EF3h]
4771
                xor     ebp, ecx
4772
                mov     edi, eax
4773
                add     edx, ebp
4774
                mov     ebp, [esi+30h]
4775
                rol     edx, 0Dh
4776
                xor     edi, ebx
4777
                lea     ecx, [ecx+ebp+6D703EF3h]
4778
                and     edi, edx
4779
                mov     ebp, edx
4780
                xor     edi, ebx
4781
                xor     ebp, eax
4782
                add     ecx, edi
4783
                mov     edi, [esi+8]
4784
                rol     ecx, 5
4785
                and     ebp, ecx
4786
                lea     ebx, [ebx+edi+6D703EF3h]
4787
                xor     ebp, eax
4788
                mov     edi, ecx
4789
                add     ebx, ebp
4790
                mov     ebp, [esi+28h]
4791
                rol     ebx, 0Eh
4792
                xor     edi, edx
4793
                lea     eax, [eax+ebp+6D703EF3h]
4794
                and     edi, ebx
4795
                mov     ebp, ebx
4796
                xor     edi, edx
4797
                xor     ebp, ecx
4798
                add     eax, edi
4799
                mov     edi, [esi]
4800
                rol     eax, 0Dh
4801
                and     ebp, eax
4802
                lea     edx, [edx+edi+6D703EF3h]
4803
                xor     ebp, ecx
4804
                mov     edi, eax
4805
                add     edx, ebp
4806
                mov     ebp, [esi+10h]
4807
                rol     edx, 0Dh
4808
                xor     edi, ebx
4809
                lea     ecx, [ecx+ebp+6D703EF3h]
4810
                and     edi, edx
4811
                mov     ebp, edx
4812
                xor     edi, ebx
4813
                xor     ebp, eax
4814
                add     ecx, edi
4815
                mov     edi, [esi+34h]
4816
                rol     ecx, 7
4817
                and     ebp, ecx
4818
                lea     ebx, [ebx+edi+6D703EF3h]
4819
                xor     ebp, eax
4820
                add     ebx, ebp
4821
                mov     ebp, [esi+4]
4822
                rol     ebx, 5
4823
                mov     [esp+10h], eax
4824
                mov     [esp+14h], ebx
4825
                mov     eax, [esp]
4826
                mov     ebx, [esp+4]
4827
                mov     [esp+1Ch], edx
4828
                mov     edx, [esp+8]
4829
                mov     [esp+18h], edx
4830
                mov     edx, [esp+0Ch]
4831
                mov     edi, ecx
4832
                xor     edi, ebx
4833
                lea     eax, [eax+ebp-70E44324h]
4834
                and     edi, edx
4835
                mov     ebp, [esi+24h]
4836
                xor     edi, ecx
4837
                add     eax, edi
4838
                mov     edi, ebx
4839
                rol     eax, 0Bh
4840
                xor     edi, eax
4841
                lea     edx, [edx+ebp-70E44324h]
4842
                and     edi, ecx
4843
                mov     ebp, [esi+2Ch]
4844
                xor     edi, ebx
4845
                add     edx, edi
4846
                mov     edi, eax
4847
                rol     edx, 0Ch
4848
                xor     edi, edx
4849
                lea     ecx, [ecx+ebp-70E44324h]
4850
                and     edi, ebx
4851
                mov     ebp, [esi+28h]
4852
                xor     edi, eax
4853
                add     ecx, edi
4854
                mov     edi, edx
4855
                rol     ecx, 0Eh
4856
                xor     edi, ecx
4857
                lea     ebx, [ebx+ebp-70E44324h]
4858
                and     edi, eax
4859
                mov     ebp, [esi]
4860
                xor     edi, edx
4861
                add     ebx, edi
4862
                mov     edi, ecx
4863
                rol     ebx, 0Fh
4864
                xor     edi, ebx
4865
                lea     eax, [eax+ebp-70E44324h]
4866
                and     edi, edx
4867
                mov     ebp, [esi+20h]
4868
                xor     edi, ecx
4869
                add     eax, edi
4870
                mov     edi, ebx
4871
                rol     eax, 0Eh
4872
                xor     edi, eax
4873
                lea     edx, [edx+ebp-70E44324h]
4874
                and     edi, ecx
4875
                mov     ebp, [esi+30h]
4876
                xor     edi, ebx
4877
                add     edx, edi
4878
                mov     edi, eax
4879
                rol     edx, 0Fh
4880
                xor     edi, edx
4881
                lea     ecx, [ecx+ebp-70E44324h]
4882
                and     edi, ebx
4883
                mov     ebp, [esi+10h]
4884
                xor     edi, eax
4885
                add     ecx, edi
4886
                mov     edi, edx
4887
                rol     ecx, 9
4888
                xor     edi, ecx
4889
                lea     ebx, [ebx+ebp-70E44324h]
4890
                and     edi, eax
4891
                mov     ebp, [esi+34h]
4892
                xor     edi, edx
4893
                add     ebx, edi
4894
                mov     edi, ecx
4895
                rol     ebx, 8
4896
                xor     edi, ebx
4897
                lea     eax, [eax+ebp-70E44324h]
4898
                and     edi, edx
4899
                mov     ebp, [esi+0Ch]
4900
                xor     edi, ecx
4901
                add     eax, edi
4902
                mov     edi, ebx
4903
                rol     eax, 9
4904
                xor     edi, eax
4905
                lea     edx, [edx+ebp-70E44324h]
4906
                and     edi, ecx
4907
                mov     ebp, [esi+1Ch]
4908
                xor     edi, ebx
4909
                add     edx, edi
4910
                mov     edi, eax
4911
                rol     edx, 0Eh
4912
                xor     edi, edx
4913
                lea     ecx, [ecx+ebp-70E44324h]
4914
                and     edi, ebx
4915
                mov     ebp, [esi+3Ch]
4916
                xor     edi, eax
4917
                add     ecx, edi
4918
                mov     edi, edx
4919
                rol     ecx, 5
4920
                xor     edi, ecx
4921
                lea     ebx, [ebx+ebp-70E44324h]
4922
                and     edi, eax
4923
                mov     ebp, [esi+38h]
4924
                xor     edi, edx
4925
                add     ebx, edi
4926
                mov     edi, ecx
4927
                rol     ebx, 6
4928
                xor     edi, ebx
4929
                lea     eax, [eax+ebp-70E44324h]
4930
                and     edi, edx
4931
                mov     ebp, [esi+14h]
4932
                xor     edi, ecx
4933
                add     eax, edi
4934
                mov     edi, ebx
4935
                rol     eax, 8
4936
                xor     edi, eax
4937
                lea     edx, [edx+ebp-70E44324h]
4938
                and     edi, ecx
4939
                mov     ebp, [esi+18h]
4940
                xor     edi, ebx
4941
                add     edx, edi
4942
                mov     edi, eax
4943
                rol     edx, 6
4944
                xor     edi, edx
4945
                lea     ecx, [ecx+ebp-70E44324h]
4946
                and     edi, ebx
4947
                mov     ebp, [esi+8]
4948
                xor     edi, eax
4949
                add     ecx, edi
4950
                mov     edi, edx
4951
                rol     ecx, 5
4952
                xor     edi, ecx
4953
                lea     ebx, [ebx+ebp-70E44324h]
4954
                and     edi, eax
4955
                mov     ebp, [esi+20h]
4956
                xor     edi, edx
4957
                add     ebx, edi
4958
                rol     ebx, 0Ch
4959
                mov     [esp], eax
4960
                mov     [esp+4], ebx
4961
                mov     eax, [esp+10h]
4962
                mov     ebx, [esp+14h]
4963
                mov     [esp+8], ecx
4964
                mov     ecx, [esp+18h]
4965
                mov     edi, ecx
4966
                mov     [esp+0Ch], edx
4967
                mov     edx, [esp+1Ch]
4968
                xor     edi, edx
4969
                mov     ebp, [esi+20h]
4970
                xor     edi, ebx
4971
                add     eax, ebp
4972
                add     eax, edi
4973
                mov     edi, ebx
4974
                rol     eax, 0Fh
4975
                xor     edi, ecx
4976
                mov     ebp, [esi+18h]
4977
                xor     edi, eax
4978
                add     edx, ebp
4979
                add     edx, edi
4980
                mov     edi, eax
4981
                rol     edx, 5
4982
                xor     edi, ebx
4983
                mov     ebp, [esi+10h]
4984
                xor     edi, edx
4985
                add     ecx, ebp
4986
                add     ecx, edi
4987
                mov     edi, edx
4988
                rol     ecx, 8
4989
                xor     edi, eax
4990
                mov     ebp, [esi+4]
4991
                xor     edi, ecx
4992
                add     ebx, ebp
4993
                add     ebx, edi
4994
                mov     edi, ecx
4995
                rol     ebx, 0Bh
4996
                xor     edi, edx
4997
                mov     ebp, [esi+0Ch]
4998
                xor     edi, ebx
4999
                add     eax, ebp
5000
                add     eax, edi
5001
                mov     edi, ebx
5002
                rol     eax, 0Eh
5003
                xor     edi, ecx
5004
                mov     ebp, [esi+2Ch]
5005
                xor     edi, eax
5006
                add     edx, ebp
5007
                add     edx, edi
5008
                mov     edi, eax
5009
                rol     edx, 0Eh
5010
                xor     edi, ebx
5011
                mov     ebp, [esi+3Ch]
5012
                xor     edi, edx
5013
                add     ecx, ebp
5014
                add     ecx, edi
5015
                mov     edi, edx
5016
                rol     ecx, 6
5017
                xor     edi, eax
5018
                mov     ebp, [esi]
5019
                xor     edi, ecx
5020
                add     ebx, ebp
5021
                add     ebx, edi
5022
                mov     edi, ecx
5023
                rol     ebx, 0Eh
5024
                xor     edi, edx
5025
                mov     ebp, [esi+14h]
5026
                xor     edi, ebx
5027
                add     eax, ebp
5028
                add     eax, edi
5029
                mov     edi, ebx
5030
                rol     eax, 6
5031
                xor     edi, ecx
5032
                mov     ebp, [esi+30h]
5033
                xor     edi, eax
5034
                add     edx, ebp
5035
                add     edx, edi
5036
                mov     edi, eax
5037
                rol     edx, 9
5038
                xor     edi, ebx
5039
                mov     ebp, [esi+8]
5040
                xor     edi, edx
5041
                add     ecx, ebp
5042
                add     ecx, edi
5043
                mov     edi, edx
5044
                rol     ecx, 0Ch
5045
                xor     edi, eax
5046
                mov     ebp, [esi+34h]
5047
                xor     edi, ecx
5048
                add     ebx, ebp
5049
                add     ebx, edi
5050
                mov     edi, ecx
5051
                rol     ebx, 9
5052
                xor     edi, edx
5053
                mov     ebp, [esi+24h]
5054
                xor     edi, ebx
5055
                add     eax, ebp
5056
                add     eax, edi
5057
                mov     edi, ebx
5058
                rol     eax, 0Ch
5059
                xor     edi, ecx
5060
                mov     ebp, [esi+1Ch]
5061
                xor     edi, eax
5062
                add     edx, ebp
5063
                add     edx, edi
5064
                mov     edi, eax
5065
                rol     edx, 5
5066
                xor     edi, ebx
5067
                mov     ebp, [esi+28h]
5068
                xor     edi, edx
5069
                add     ecx, ebp
5070
                add     ecx, edi
5071
                mov     edi, edx
5072
                rol     ecx, 0Fh
5073
                xor     edi, eax
5074
                mov     ebp, [esi+38h]
5075
                xor     edi, ecx
5076
                add     ebx, ebp
5077
                add     ebx, edi
5078
                mov     edi, ecx
5079
                rol     ebx, 8
5080
                mov     edi, [esp+20h]
5081
                add     [edi+0Ch], edx
5082
                add     [edi+10h], eax
5083
                add     [edi+14h], ebx
5084
                mov     eax, [esp]
5085
                mov     ebx, [esp+4]
5086
                add     [edi+18h], ecx
5087
                mov     ecx, [esp+8]
5088
                mov     edx, [esp+0Ch]
5089
                add     [edi], eax
5090
                add     esp, 24h
5091
                add     [edi+4], ebx
5092
                add     [edi+8], ecx
5093
                add     [edi+1Ch], edx
5094
5095
                pop     ebp
5096
                pop     edi
5097
                pop     esi
5098
                pop     ebx
5099
end;
5100
{$ENDIF}
5101
5102
{$IFDEF THash_RipeMD320_asm}
5103
procedure THash_RipeMD320.DoTransform(Buffer: PUInt32Array);
5104
asm
5105
                push    ebx
5106
                push    esi
5107
                push    edi
5108
                lea     edi, [eax].THash_RipeMD320.FDigest
5109
                mov     esi, edx
5110
                push    ebp
5111
                mov     eax, [edi]
5112
                mov     ebx, [edi+4]
5113
                push    edi
5114
                mov     ecx, [edi+8]
5115
                mov     edx, [edi+0Ch]
5116
                add     esp, 0FFFFFFD8h
5117
                mov     ebp, [edi+10h]
5118
                mov     edi, edx
5119
                xor     edi, ecx
5120
                xor     edi, ebx
5121
                add     eax, [esi]
5122
                rol     ecx, 0Ah
5123
                add     eax, edi
5124
                mov     edi, ecx
5125
                rol     eax, 0Bh
5126
                add     eax, ebp
5127
                xor     edi, ebx
5128
                xor     edi, eax
5129
                add     ebp, [esi+4]
5130
                rol     ebx, 0Ah
5131
                add     ebp, edi
5132
                mov     edi, ebx
5133
                rol     ebp, 0Eh
5134
                add     ebp, edx
5135
                xor     edi, eax
5136
                xor     edi, ebp
5137
                add     edx, [esi+8]
5138
                rol     eax, 0Ah
5139
                add     edx, edi
5140
                mov     edi, eax
5141
                rol     edx, 0Fh
5142
                add     edx, ecx
5143
                xor     edi, ebp
5144
                xor     edi, edx
5145
                add     ecx, [esi+0Ch]
5146
                rol     ebp, 0Ah
5147
                add     ecx, edi
5148
                mov     edi, ebp
5149
                rol     ecx, 0Ch
5150
                add     ecx, ebx
5151
                xor     edi, edx
5152
                xor     edi, ecx
5153
                add     ebx, [esi+10h]
5154
                rol     edx, 0Ah
5155
                add     ebx, edi
5156
                mov     edi, edx
5157
                rol     ebx, 5
5158
                add     ebx, eax
5159
                xor     edi, ecx
5160
                xor     edi, ebx
5161
                add     eax, [esi+14h]
5162
                rol     ecx, 0Ah
5163
                add     eax, edi
5164
                mov     edi, ecx
5165
                rol     eax, 8
5166
                add     eax, ebp
5167
                xor     edi, ebx
5168
                xor     edi, eax
5169
                add     ebp, [esi+18h]
5170
                rol     ebx, 0Ah
5171
                add     ebp, edi
5172
                mov     edi, ebx
5173
                rol     ebp, 7
5174
                add     ebp, edx
5175
                xor     edi, eax
5176
                xor     edi, ebp
5177
                add     edx, [esi+1Ch]
5178
                rol     eax, 0Ah
5179
                add     edx, edi
5180
                mov     edi, eax
5181
                rol     edx, 9
5182
                add     edx, ecx
5183
                xor     edi, ebp
5184
                xor     edi, edx
5185
                add     ecx, [esi+20h]
5186
                rol     ebp, 0Ah
5187
                add     ecx, edi
5188
                mov     edi, ebp
5189
                rol     ecx, 0Bh
5190
                add     ecx, ebx
5191
                xor     edi, edx
5192
                xor     edi, ecx
5193
                add     ebx, [esi+24h]
5194
                rol     edx, 0Ah
5195
                add     ebx, edi
5196
                mov     edi, edx
5197
                rol     ebx, 0Dh
5198
                add     ebx, eax
5199
                xor     edi, ecx
5200
                xor     edi, ebx
5201
                add     eax, [esi+28h]
5202
                rol     ecx, 0Ah
5203
                add     eax, edi
5204
                mov     edi, ecx
5205
                rol     eax, 0Eh
5206
                add     eax, ebp
5207
                xor     edi, ebx
5208
                xor     edi, eax
5209
                add     ebp, [esi+2Ch]
5210
                rol     ebx, 0Ah
5211
                add     ebp, edi
5212
                mov     edi, ebx
5213
                rol     ebp, 0Fh
5214
                add     ebp, edx
5215
                xor     edi, eax
5216
                xor     edi, ebp
5217
                add     edx, [esi+30h]
5218
                rol     eax, 0Ah
5219
                add     edx, edi
5220
                mov     edi, eax
5221
                rol     edx, 6
5222
                add     edx, ecx
5223
                xor     edi, ebp
5224
                xor     edi, edx
5225
                add     ecx, [esi+34h]
5226
                rol     ebp, 0Ah
5227
                add     ecx, edi
5228
                mov     edi, ebp
5229
                rol     ecx, 7
5230
                add     ecx, ebx
5231
                xor     edi, edx
5232
                xor     edi, ecx
5233
                add     ebx, [esi+38h]
5234
                rol     edx, 0Ah
5235
                add     ebx, edi
5236
                mov     edi, edx
5237
                rol     ebx, 9
5238
                add     ebx, eax
5239
                xor     edi, ecx
5240
                xor     edi, ebx
5241
                add     eax, [esi+3Ch]
5242
                rol     ecx, 0Ah
5243
                add     eax, edi
5244
                rol     eax, 8
5245
                add     eax, ebp
5246
                mov     edi, [esp+28h]
5247
                mov     [esp], eax
5248
                mov     [esp+4], ebx
5249
                mov     eax, [edi+14h]
5250
                mov     ebx, [edi+18h]
5251
                mov     [esp+8], ecx
5252
                mov     [esp+0Ch], edx
5253
                mov     ecx, [edi+1Ch]
5254
                mov     edx, [edi+20h]
5255
                mov     [esp+10h], ebp
5256
                mov     ebp, [edi+24h]
5257
                mov     edi, edx
5258
                xor     edi, 0FFFFFFFFh
5259
                or      edi, ecx
5260
                add     eax, [esi+14h]
5261
                xor     edi, ebx
5262
                rol     ecx, 0Ah
5263
                lea     eax, [eax+edi+50A28BE6h]
5264
                mov     edi, ecx
5265
                rol     eax, 8
5266
                add     eax, ebp
5267
                xor     edi, 0FFFFFFFFh
5268
                or      edi, ebx
5269
                add     ebp, [esi+38h]
5270
                xor     edi, eax
5271
                rol     ebx, 0Ah
5272
                lea     ebp, [ebp+edi+50A28BE6h]
5273
                mov     edi, ebx
5274
                rol     ebp, 9
5275
                add     ebp, edx
5276
                xor     edi, 0FFFFFFFFh
5277
                or      edi, eax
5278
                add     edx, [esi+1Ch]
5279
                xor     edi, ebp
5280
                rol     eax, 0Ah
5281
                lea     edx, [edx+edi+50A28BE6h]
5282
                mov     edi, eax
5283
                rol     edx, 9
5284
                add     edx, ecx
5285
                xor     edi, 0FFFFFFFFh
5286
                or      edi, ebp
5287
                add     ecx, [esi]
5288
                xor     edi, edx
5289
                rol     ebp, 0Ah
5290
                lea     ecx, [ecx+edi+50A28BE6h]
5291
                mov     edi, ebp
5292
                rol     ecx, 0Bh
5293
                add     ecx, ebx
5294
                xor     edi, 0FFFFFFFFh
5295
                or      edi, edx
5296
                add     ebx, [esi+24h]
5297
                xor     edi, ecx
5298
                rol     edx, 0Ah
5299
                lea     ebx, [ebx+edi+50A28BE6h]
5300
                mov     edi, edx
5301
                rol     ebx, 0Dh
5302
                add     ebx, eax
5303
                xor     edi, 0FFFFFFFFh
5304
                or      edi, ecx
5305
                add     eax, [esi+8]
5306
                xor     edi, ebx
5307
                rol     ecx, 0Ah
5308
                lea     eax, [eax+edi+50A28BE6h]
5309
                mov     edi, ecx
5310
                rol     eax, 0Fh
5311
                add     eax, ebp
5312
                xor     edi, 0FFFFFFFFh
5313
                or      edi, ebx
5314
                add     ebp, [esi+2Ch]
5315
                xor     edi, eax
5316
                rol     ebx, 0Ah
5317
                lea     ebp, [ebp+edi+50A28BE6h]
5318
                mov     edi, ebx
5319
                rol     ebp, 0Fh
5320
                add     ebp, edx
5321
                xor     edi, 0FFFFFFFFh
5322
                or      edi, eax
5323
                add     edx, [esi+10h]
5324
                xor     edi, ebp
5325
                rol     eax, 0Ah
5326
                lea     edx, [edx+edi+50A28BE6h]
5327
                mov     edi, eax
5328
                rol     edx, 5
5329
                add     edx, ecx
5330
                xor     edi, 0FFFFFFFFh
5331
                or      edi, ebp
5332
                add     ecx, [esi+34h]
5333
                xor     edi, edx
5334
                rol     ebp, 0Ah
5335
                lea     ecx, [ecx+edi+50A28BE6h]
5336
                mov     edi, ebp
5337
                rol     ecx, 7
5338
                add     ecx, ebx
5339
                xor     edi, 0FFFFFFFFh
5340
                or      edi, edx
5341
                add     ebx, [esi+18h]
5342
                xor     edi, ecx
5343
                rol     edx, 0Ah
5344
                lea     ebx, [ebx+edi+50A28BE6h]
5345
                mov     edi, edx
5346
                rol     ebx, 7
5347
                add     ebx, eax
5348
                xor     edi, 0FFFFFFFFh
5349
                or      edi, ecx
5350
                add     eax, [esi+3Ch]
5351
                xor     edi, ebx
5352
                rol     ecx, 0Ah
5353
                lea     eax, [eax+edi+50A28BE6h]
5354
                mov     edi, ecx
5355
                rol     eax, 8
5356
                add     eax, ebp
5357
                xor     edi, 0FFFFFFFFh
5358
                or      edi, ebx
5359
                add     ebp, [esi+20h]
5360
                xor     edi, eax
5361
                rol     ebx, 0Ah
5362
                lea     ebp, [ebp+edi+50A28BE6h]
5363
                mov     edi, ebx
5364
                rol     ebp, 0Bh
5365
                add     ebp, edx
5366
                xor     edi, 0FFFFFFFFh
5367
                or      edi, eax
5368
                add     edx, [esi+4]
5369
                xor     edi, ebp
5370
                rol     eax, 0Ah
5371
                lea     edx, [edx+edi+50A28BE6h]
5372
                mov     edi, eax
5373
                rol     edx, 0Eh
5374
                add     edx, ecx
5375
                xor     edi, 0FFFFFFFFh
5376
                or      edi, ebp
5377
                add     ecx, [esi+28h]
5378
                xor     edi, edx
5379
                rol     ebp, 0Ah
5380
                lea     ecx, [ecx+edi+50A28BE6h]
5381
                mov     edi, ebp
5382
                rol     ecx, 0Eh
5383
                add     ecx, ebx
5384
                xor     edi, 0FFFFFFFFh
5385
                or      edi, edx
5386
                add     ebx, [esi+0Ch]
5387
                xor     edi, ecx
5388
                rol     edx, 0Ah
5389
                lea     ebx, [ebx+edi+50A28BE6h]
5390
                mov     edi, edx
5391
                rol     ebx, 0Ch
5392
                add     ebx, eax
5393
                xor     edi, 0FFFFFFFFh
5394
                or      edi, ecx
5395
                add     eax, [esi+30h]
5396
                xor     edi, ebx
5397
                rol     ecx, 0Ah
5398
                lea     eax, [eax+edi+50A28BE6h]
5399
                rol     eax, 6
5400
                add     eax, ebp
5401
                mov     [esp+18h], ebx
5402
                mov     [esp+1Ch], ecx
5403
                mov     ebx, [esp+4]
5404
                mov     ecx, [esp+8]
5405
                mov     [esp+20h], edx
5406
                mov     [esp+24h], ebp
5407
                mov     edx, [esp+0Ch]
5408
                mov     ebp, [esp]
5409
                mov     [esp+14h], ebp
5410
                mov     ebp, [esp+10h]
5411
                mov     edi, ecx
5412
                xor     edi, ebx
5413
                add     ebp, [esi+1Ch]
5414
                and     edi, eax
5415
                xor     edi, ecx
5416
                rol     ebx, 0Ah
5417
                lea     ebp, [ebp+edi+5A827999h]
5418
                mov     edi, ebx
5419
                rol     ebp, 7
5420
                add     ebp, edx
5421
                xor     edi, eax
5422
                add     edx, [esi+10h]
5423
                and     edi, ebp
5424
                xor     edi, ebx
5425
                rol     eax, 0Ah
5426
                lea     edx, [edx+edi+5A827999h]
5427
                mov     edi, eax
5428
                rol     edx, 6
5429
                add     edx, ecx
5430
                xor     edi, ebp
5431
                add     ecx, [esi+34h]
5432
                and     edi, edx
5433
                xor     edi, eax
5434
                rol     ebp, 0Ah
5435
                lea     ecx, [ecx+edi+5A827999h]
5436
                mov     edi, ebp
5437
                rol     ecx, 8
5438
                add     ecx, ebx
5439
                xor     edi, edx
5440
                add     ebx, [esi+4]
5441
                and     edi, ecx
5442
                xor     edi, ebp
5443
                rol     edx, 0Ah
5444
                lea     ebx, [ebx+edi+5A827999h]
5445
                mov     edi, edx
5446
                rol     ebx, 0Dh
5447
                add     ebx, eax
5448
                xor     edi, ecx
5449
                add     eax, [esi+28h]
5450
                and     edi, ebx
5451
                xor     edi, edx
5452
                rol     ecx, 0Ah
5453
                lea     eax, [eax+edi+5A827999h]
5454
                mov     edi, ecx
5455
                rol     eax, 0Bh
5456
                add     eax, ebp
5457
                xor     edi, ebx
5458
                add     ebp, [esi+18h]
5459
                and     edi, eax
5460
                xor     edi, ecx
5461
                rol     ebx, 0Ah
5462
                lea     ebp, [ebp+edi+5A827999h]
5463
                mov     edi, ebx
5464
                rol     ebp, 9
5465
                add     ebp, edx
5466
                xor     edi, eax
5467
                add     edx, [esi+3Ch]
5468
                and     edi, ebp
5469
                xor     edi, ebx
5470
                rol     eax, 0Ah
5471
                lea     edx, [edx+edi+5A827999h]
5472
                mov     edi, eax
5473
                rol     edx, 7
5474
                add     edx, ecx
5475
                xor     edi, ebp
5476
                add     ecx, [esi+0Ch]
5477
                and     edi, edx
5478
                xor     edi, eax
5479
                rol     ebp, 0Ah
5480
                lea     ecx, [ecx+edi+5A827999h]
5481
                mov     edi, ebp
5482
                rol     ecx, 0Fh
5483
                add     ecx, ebx
5484
                xor     edi, edx
5485
                add     ebx, [esi+30h]
5486
                and     edi, ecx
5487
                xor     edi, ebp
5488
                rol     edx, 0Ah
5489
                lea     ebx, [ebx+edi+5A827999h]
5490
                mov     edi, edx
5491
                rol     ebx, 7
5492
                add     ebx, eax
5493
                xor     edi, ecx
5494
                add     eax, [esi]
5495
                and     edi, ebx
5496
                xor     edi, edx
5497
                rol     ecx, 0Ah
5498
                lea     eax, [eax+edi+5A827999h]
5499
                mov     edi, ecx
5500
                rol     eax, 0Ch
5501
                add     eax, ebp
5502
                xor     edi, ebx
5503
                add     ebp, [esi+24h]
5504
                and     edi, eax
5505
                xor     edi, ecx
5506
                rol     ebx, 0Ah
5507
                lea     ebp, [ebp+edi+5A827999h]
5508
                mov     edi, ebx
5509
                rol     ebp, 0Fh
5510
                add     ebp, edx
5511
                xor     edi, eax
5512
                add     edx, [esi+14h]
5513
                and     edi, ebp
5514
                xor     edi, ebx
5515
                rol     eax, 0Ah
5516
                lea     edx, [edx+edi+5A827999h]
5517
                mov     edi, eax
5518
                rol     edx, 9
5519
                add     edx, ecx
5520
                xor     edi, ebp
5521
                add     ecx, [esi+8]
5522
                and     edi, edx
5523
                xor     edi, eax
5524
                rol     ebp, 0Ah
5525
                lea     ecx, [ecx+edi+5A827999h]
5526
                mov     edi, ebp
5527
                rol     ecx, 0Bh
5528
                add     ecx, ebx
5529
                xor     edi, edx
5530
                add     ebx, [esi+38h]
5531
                and     edi, ecx
5532
                xor     edi, ebp
5533
                rol     edx, 0Ah
5534
                lea     ebx, [ebx+edi+5A827999h]
5535
                mov     edi, edx
5536
                rol     ebx, 7
5537
                add     ebx, eax
5538
                xor     edi, ecx
5539
                add     eax, [esi+2Ch]
5540
                and     edi, ebx
5541
                xor     edi, edx
5542
                rol     ecx, 0Ah
5543
                lea     eax, [eax+edi+5A827999h]
5544
                mov     edi, ecx
5545
                rol     eax, 0Dh
5546
                add     eax, ebp
5547
                xor     edi, ebx
5548
                add     ebp, [esi+20h]
5549
                and     edi, eax
5550
                xor     edi, ecx
5551
                rol     ebx, 0Ah
5552
                lea     ebp, [ebp+edi+5A827999h]
5553
                rol     ebp, 0Ch
5554
                add     ebp, edx
5555
                mov     [esp], eax
5556
                mov     [esp+4], ebx
5557
                mov     eax, [esp+14h]
5558
                mov     ebx, [esp+18h]
5559
                mov     [esp+8], ecx
5560
                mov     [esp+0Ch], edx
5561
                mov     ecx, [esp+1Ch]
5562
                mov     edx, [esp+20h]
5563
                mov     [esp+10h], ebp
5564
                mov     ebp, [esp+24h]
5565
                mov     edi, ebx
5566
                xor     edi, eax
5567
                and     edi, ecx
5568
                add     ebp, [esi+18h]
5569
                xor     edi, ebx
5570
                rol     ebx, 0Ah
5571
                lea     ebp, [ebp+edi+5C4DD124h]
5572
                mov     edi, eax
5573
                rol     ebp, 9
5574
                add     ebp, edx
5575
                xor     edi, ebp
5576
                and     edi, ebx
5577
                add     edx, [esi+2Ch]
5578
                xor     edi, eax
5579
                rol     eax, 0Ah
5580
                lea     edx, [edx+edi+5C4DD124h]
5581
                mov     edi, ebp
5582
                rol     edx, 0Dh
5583
                add     edx, ecx
5584
                xor     edi, edx
5585
                and     edi, eax
5586
                add     ecx, [esi+0Ch]
5587
                xor     edi, ebp
5588
                rol     ebp, 0Ah
5589
                lea     ecx, [ecx+edi+5C4DD124h]
5590
                mov     edi, edx
5591
                rol     ecx, 0Fh
5592
                add     ecx, ebx
5593
                xor     edi, ecx
5594
                and     edi, ebp
5595
                add     ebx, [esi+1Ch]
5596
                xor     edi, edx
5597
                rol     edx, 0Ah
5598
                lea     ebx, [ebx+edi+5C4DD124h]
5599
                mov     edi, ecx
5600
                rol     ebx, 7
5601
                add     ebx, eax
5602
                xor     edi, ebx
5603
                and     edi, edx
5604
                add     eax, [esi]
5605
                xor     edi, ecx
5606
                rol     ecx, 0Ah
5607
                lea     eax, [eax+edi+5C4DD124h]
5608
                mov     edi, ebx
5609
                rol     eax, 0Ch
5610
                add     eax, ebp
5611
                xor     edi, eax
5612
                and     edi, ecx
5613
                add     ebp, [esi+34h]
5614
                xor     edi, ebx
5615
                rol     ebx, 0Ah
5616
                lea     ebp, [ebp+edi+5C4DD124h]
5617
                mov     edi, eax
5618
                rol     ebp, 8
5619
                add     ebp, edx
5620
                xor     edi, ebp
5621
                and     edi, ebx
5622
                add     edx, [esi+14h]
5623
                xor     edi, eax
5624
                rol     eax, 0Ah
5625
                lea     edx, [edx+edi+5C4DD124h]
5626
                mov     edi, ebp
5627
                rol     edx, 9
5628
                add     edx, ecx
5629
                xor     edi, edx
5630
                and     edi, eax
5631
                add     ecx, [esi+28h]
5632
                xor     edi, ebp
5633
                rol     ebp, 0Ah
5634
                lea     ecx, [ecx+edi+5C4DD124h]
5635
                mov     edi, edx
5636
                rol     ecx, 0Bh
5637
                add     ecx, ebx
5638
                xor     edi, ecx
5639
                and     edi, ebp
5640
                add     ebx, [esi+38h]
5641
                xor     edi, edx
5642
                rol     edx, 0Ah
5643
                lea     ebx, [ebx+edi+5C4DD124h]
5644
                mov     edi, ecx
5645
                rol     ebx, 7
5646
                add     ebx, eax
5647
                xor     edi, ebx
5648
                and     edi, edx
5649
                add     eax, [esi+3Ch]
5650
                xor     edi, ecx
5651
                rol     ecx, 0Ah
5652
                lea     eax, [eax+edi+5C4DD124h]
5653
                mov     edi, ebx
5654
                rol     eax, 7
5655
                add     eax, ebp
5656
                xor     edi, eax
5657
                and     edi, ecx
5658
                add     ebp, [esi+20h]
5659
                xor     edi, ebx
5660
                rol     ebx, 0Ah
5661
                lea     ebp, [ebp+edi+5C4DD124h]
5662
                mov     edi, eax
5663
                rol     ebp, 0Ch
5664
                add     ebp, edx
5665
                xor     edi, ebp
5666
                and     edi, ebx
5667
                add     edx, [esi+30h]
5668
                xor     edi, eax
5669
                rol     eax, 0Ah
5670
                lea     edx, [edx+edi+5C4DD124h]
5671
                mov     edi, ebp
5672
                rol     edx, 7
5673
                add     edx, ecx
5674
                xor     edi, edx
5675
                and     edi, eax
5676
                add     ecx, [esi+10h]
5677
                xor     edi, ebp
5678
                rol     ebp, 0Ah
5679
                lea     ecx, [ecx+edi+5C4DD124h]
5680
                mov     edi, edx
5681
                rol     ecx, 6
5682
                add     ecx, ebx
5683
                xor     edi, ecx
5684
                and     edi, ebp
5685
                add     ebx, [esi+24h]
5686
                xor     edi, edx
5687
                rol     edx, 0Ah
5688
                lea     ebx, [ebx+edi+5C4DD124h]
5689
                mov     edi, ecx
5690
                rol     ebx, 0Fh
5691
                add     ebx, eax
5692
                xor     edi, ebx
5693
                and     edi, edx
5694
                add     eax, [esi+4]
5695
                xor     edi, ecx
5696
                rol     ecx, 0Ah
5697
                lea     eax, [eax+edi+5C4DD124h]
5698
                mov     edi, ebx
5699
                rol     eax, 0Dh
5700
                add     eax, ebp
5701
                xor     edi, eax
5702
                and     edi, ecx
5703
                add     ebp, [esi+8]
5704
                xor     edi, ebx
5705
                rol     ebx, 0Ah
5706
                lea     ebp, [ebp+edi+5C4DD124h]
5707
                rol     ebp, 0Bh
5708
                add     ebp, edx
5709
                mov     [esp+14h], eax
5710
                mov     [esp+1Ch], ecx
5711
                mov     eax, [esp]
5712
                mov     ecx, [esp+8]
5713
                mov     [esp+20h], edx
5714
                mov     [esp+24h], ebp
5715
                mov     edx, [esp+0Ch]
5716
                mov     ebp, [esp+4]
5717
                mov     [esp+18h], ebp
5718
                mov     ebp, [esp+10h]
5719
                mov     edi, eax
5720
                xor     edi, 0FFFFFFFFh
5721
                or      edi, ebp
5722
                add     edx, [esi+0Ch]
5723
                xor     edi, ebx
5724
                rol     eax, 0Ah
5725
                lea     edx, [edx+edi+6ED9EBA1h]
5726
                mov     edi, ebp
5727
                rol     edx, 0Bh
5728
                add     edx, ecx
5729
                xor     edi, 0FFFFFFFFh
5730
                or      edi, edx
5731
                add     ecx, [esi+28h]
5732
                xor     edi, eax
5733
                rol     ebp, 0Ah
5734
                lea     ecx, [ecx+edi+6ED9EBA1h]
5735
                mov     edi, edx
5736
                rol     ecx, 0Dh
5737
                add     ecx, ebx
5738
                xor     edi, 0FFFFFFFFh
5739
                or      edi, ecx
5740
                add     ebx, [esi+38h]
5741
                xor     edi, ebp
5742
                rol     edx, 0Ah
5743
                lea     ebx, [ebx+edi+6ED9EBA1h]
5744
                mov     edi, ecx
5745
                rol     ebx, 6
5746
                add     ebx, eax
5747
                xor     edi, 0FFFFFFFFh
5748
                or      edi, ebx
5749
                add     eax, [esi+10h]
5750
                xor     edi, edx
5751
                rol     ecx, 0Ah
5752
                lea     eax, [eax+edi+6ED9EBA1h]
5753
                mov     edi, ebx
5754
                rol     eax, 7
5755
                add     eax, ebp
5756
                xor     edi, 0FFFFFFFFh
5757
                or      edi, eax
5758
                add     ebp, [esi+24h]
5759
                xor     edi, ecx
5760
                rol     ebx, 0Ah
5761
                lea     ebp, [ebp+edi+6ED9EBA1h]
5762
                mov     edi, eax
5763
                rol     ebp, 0Eh
5764
                add     ebp, edx
5765
                xor     edi, 0FFFFFFFFh
5766
                or      edi, ebp
5767
                add     edx, [esi+3Ch]
5768
                xor     edi, ebx
5769
                rol     eax, 0Ah
5770
                lea     edx, [edx+edi+6ED9EBA1h]
5771
                mov     edi, ebp
5772
                rol     edx, 9
5773
                add     edx, ecx
5774
                xor     edi, 0FFFFFFFFh
5775
                or      edi, edx
5776
                add     ecx, [esi+20h]
5777
                xor     edi, eax
5778
                rol     ebp, 0Ah
5779
                lea     ecx, [ecx+edi+6ED9EBA1h]
5780
                mov     edi, edx
5781
                rol     ecx, 0Dh
5782
                add     ecx, ebx
5783
                xor     edi, 0FFFFFFFFh
5784
                or      edi, ecx
5785
                add     ebx, [esi+4]
5786
                xor     edi, ebp
5787
                rol     edx, 0Ah
5788
                lea     ebx, [ebx+edi+6ED9EBA1h]
5789
                mov     edi, ecx
5790
                rol     ebx, 0Fh
5791
                add     ebx, eax
5792
                xor     edi, 0FFFFFFFFh
5793
                or      edi, ebx
5794
                add     eax, [esi+8]
5795
                xor     edi, edx
5796
                rol     ecx, 0Ah
5797
                lea     eax, [eax+edi+6ED9EBA1h]
5798
                mov     edi, ebx
5799
                rol     eax, 0Eh
5800
                add     eax, ebp
5801
                xor     edi, 0FFFFFFFFh
5802
                or      edi, eax
5803
                add     ebp, [esi+1Ch]
5804
                xor     edi, ecx
5805
                rol     ebx, 0Ah
5806
                lea     ebp, [ebp+edi+6ED9EBA1h]
5807
                mov     edi, eax
5808
                rol     ebp, 8
5809
                add     ebp, edx
5810
                xor     edi, 0FFFFFFFFh
5811
                or      edi, ebp
5812
                add     edx, [esi]
5813
                xor     edi, ebx
5814
                rol     eax, 0Ah
5815
                lea     edx, [edx+edi+6ED9EBA1h]
5816
                mov     edi, ebp
5817
                rol     edx, 0Dh
5818
                add     edx, ecx
5819
                xor     edi, 0FFFFFFFFh
5820
                or      edi, edx
5821
                add     ecx, [esi+18h]
5822
                xor     edi, eax
5823
                rol     ebp, 0Ah
5824
                lea     ecx, [ecx+edi+6ED9EBA1h]
5825
                mov     edi, edx
5826
                rol     ecx, 6
5827
                add     ecx, ebx
5828
                xor     edi, 0FFFFFFFFh
5829
                or      edi, ecx
5830
                add     ebx, [esi+34h]
5831
                xor     edi, ebp
5832
                rol     edx, 0Ah
5833
                lea     ebx, [ebx+edi+6ED9EBA1h]
5834
                mov     edi, ecx
5835
                rol     ebx, 5
5836
                add     ebx, eax
5837
                xor     edi, 0FFFFFFFFh
5838
                or      edi, ebx
5839
                add     eax, [esi+2Ch]
5840
                xor     edi, edx
5841
                rol     ecx, 0Ah
5842
                lea     eax, [eax+edi+6ED9EBA1h]
5843
                mov     edi, ebx
5844
                rol     eax, 0Ch
5845
                add     eax, ebp
5846
                xor     edi, 0FFFFFFFFh
5847
                or      edi, eax
5848
                add     ebp, [esi+14h]
5849
                xor     edi, ecx
5850
                rol     ebx, 0Ah
5851
                lea     ebp, [ebp+edi+6ED9EBA1h]
5852
                mov     edi, eax
5853
                rol     ebp, 7
5854
                add     ebp, edx
5855
                xor     edi, 0FFFFFFFFh
5856
                or      edi, ebp
5857
                add     edx, [esi+30h]
5858
                xor     edi, ebx
5859
                rol     eax, 0Ah
5860
                lea     edx, [edx+edi+6ED9EBA1h]
5861
                rol     edx, 5
5862
                add     edx, ecx
5863
                mov     [esp], eax
5864
                mov     [esp+4], ebx
5865
                mov     eax, [esp+14h]
5866
                mov     ebx, [esp+18h]
5867
                mov     [esp+8], ecx
5868
                mov     [esp+0Ch], edx
5869
                mov     ecx, [esp+1Ch]
5870
                mov     edx, [esp+20h]
5871
                mov     [esp+10h], ebp
5872
                mov     ebp, [esp+24h]
5873
                mov     edi, eax
5874
                xor     edi, 0FFFFFFFFh
5875
                or      edi, ebp
5876
                add     edx, [esi+3Ch]
5877
                xor     edi, ebx
5878
                rol     eax, 0Ah
5879
                lea     edx, [edx+edi+6D703EF3h]
5880
                mov     edi, ebp
5881
                rol     edx, 9
5882
                add     edx, ecx
5883
                xor     edi, 0FFFFFFFFh
5884
                or      edi, edx
5885
                add     ecx, [esi+14h]
5886
                xor     edi, eax
5887
                rol     ebp, 0Ah
5888
                lea     ecx, [ecx+edi+6D703EF3h]
5889
                mov     edi, edx
5890
                rol     ecx, 7
5891
                add     ecx, ebx
5892
                xor     edi, 0FFFFFFFFh
5893
                or      edi, ecx
5894
                add     ebx, [esi+4]
5895
                xor     edi, ebp
5896
                rol     edx, 0Ah
5897
                lea     ebx, [ebx+edi+6D703EF3h]
5898
                mov     edi, ecx
5899
                rol     ebx, 0Fh
5900
                add     ebx, eax
5901
                xor     edi, 0FFFFFFFFh
5902
                or      edi, ebx
5903
                add     eax, [esi+0Ch]
5904
                xor     edi, edx
5905
                rol     ecx, 0Ah
5906
                lea     eax, [eax+edi+6D703EF3h]
5907
                mov     edi, ebx
5908
                rol     eax, 0Bh
5909
                add     eax, ebp
5910
                xor     edi, 0FFFFFFFFh
5911
                or      edi, eax
5912
                add     ebp, [esi+1Ch]
5913
                xor     edi, ecx
5914
                rol     ebx, 0Ah
5915
                lea     ebp, [ebp+edi+6D703EF3h]
5916
                mov     edi, eax
5917
                rol     ebp, 8
5918
                add     ebp, edx
5919
                xor     edi, 0FFFFFFFFh
5920
                or      edi, ebp
5921
                add     edx, [esi+38h]
5922
                xor     edi, ebx
5923
                rol     eax, 0Ah
5924
                lea     edx, [edx+edi+6D703EF3h]
5925
                mov     edi, ebp
5926
                rol     edx, 6
5927
                add     edx, ecx
5928
                xor     edi, 0FFFFFFFFh
5929
                or      edi, edx
5930
                add     ecx, [esi+18h]
5931
                xor     edi, eax
5932
                rol     ebp, 0Ah
5933
                lea     ecx, [ecx+edi+6D703EF3h]
5934
                mov     edi, edx
5935
                rol     ecx, 6
5936
                add     ecx, ebx
5937
                xor     edi, 0FFFFFFFFh
5938
                or      edi, ecx
5939
                add     ebx, [esi+24h]
5940
                xor     edi, ebp
5941
                rol     edx, 0Ah
5942
                lea     ebx, [ebx+edi+6D703EF3h]
5943
                mov     edi, ecx
5944
                rol     ebx, 0Eh
5945
                add     ebx, eax
5946
                xor     edi, 0FFFFFFFFh
5947
                or      edi, ebx
5948
                add     eax, [esi+2Ch]
5949
                xor     edi, edx
5950
                rol     ecx, 0Ah
5951
                lea     eax, [eax+edi+6D703EF3h]
5952
                mov     edi, ebx
5953
                rol     eax, 0Ch
5954
                add     eax, ebp
5955
                xor     edi, 0FFFFFFFFh
5956
                or      edi, eax
5957
                add     ebp, [esi+20h]
5958
                xor     edi, ecx
5959
                rol     ebx, 0Ah
5960
                lea     ebp, [ebp+edi+6D703EF3h]
5961
                mov     edi, eax
5962
                rol     ebp, 0Dh
5963
                add     ebp, edx
5964
                xor     edi, 0FFFFFFFFh
5965
                or      edi, ebp
5966
                add     edx, [esi+30h]
5967
                xor     edi, ebx
5968
                rol     eax, 0Ah
5969
                lea     edx, [edx+edi+6D703EF3h]
5970
                mov     edi, ebp
5971
                rol     edx, 5
5972
                add     edx, ecx
5973
                xor     edi, 0FFFFFFFFh
5974
                or      edi, edx
5975
                add     ecx, [esi+8]
5976
                xor     edi, eax
5977
                rol     ebp, 0Ah
5978
                lea     ecx, [ecx+edi+6D703EF3h]
5979
                mov     edi, edx
5980
                rol     ecx, 0Eh
5981
                add     ecx, ebx
5982
                xor     edi, 0FFFFFFFFh
5983
                or      edi, ecx
5984
                add     ebx, [esi+28h]
5985
                xor     edi, ebp
5986
                rol     edx, 0Ah
5987
                lea     ebx, [ebx+edi+6D703EF3h]
5988
                mov     edi, ecx
5989
                rol     ebx, 0Dh
5990
                add     ebx, eax
5991
                xor     edi, 0FFFFFFFFh
5992
                or      edi, ebx
5993
                add     eax, [esi]
5994
                xor     edi, edx
5995
                rol     ecx, 0Ah
5996
                lea     eax, [eax+edi+6D703EF3h]
5997
                mov     edi, ebx
5998
                rol     eax, 0Dh
5999
                add     eax, ebp
6000
                xor     edi, 0FFFFFFFFh
6001
                or      edi, eax
6002
                add     ebp, [esi+10h]
6003
                xor     edi, ecx
6004
                rol     ebx, 0Ah
6005
                lea     ebp, [ebp+edi+6D703EF3h]
6006
                mov     edi, eax
6007
                rol     ebp, 7
6008
                add     ebp, edx
6009
                xor     edi, 0FFFFFFFFh
6010
                or      edi, ebp
6011
                add     edx, [esi+34h]
6012
                xor     edi, ebx
6013
                rol     eax, 0Ah
6014
                lea     edx, [edx+edi+6D703EF3h]
6015
                rol     edx, 5
6016
                add     edx, ecx
6017
                mov     [esp+14h], eax
6018
                mov     [esp+18h], ebx
6019
                mov     eax, [esp]
6020
                mov     ebx, [esp+4]
6021
                mov     [esp+20h], edx
6022
                mov     [esp+24h], ebp
6023
                mov     edx, [esp+0Ch]
6024
                mov     ebp, [esp+8]
6025
                mov     [esp+1Ch], ebp
6026
                mov     ebp, [esp+10h]
6027
                mov     edi, ebp
6028
                xor     edi, edx
6029
                and     edi, eax
6030
                add     ecx, [esi+4]
6031
                xor     edi, ebp
6032
                rol     ebp, 0Ah
6033
                lea     ecx, [ecx+edi-70E44324h]
6034
                mov     edi, edx
6035
                rol     ecx, 0Bh
6036
                add     ecx, ebx
6037
                xor     edi, ecx
6038
                and     edi, ebp
6039
                add     ebx, [esi+24h]
6040
                xor     edi, edx
6041
                rol     edx, 0Ah
6042
                lea     ebx, [ebx+edi-70E44324h]
6043
                mov     edi, ecx
6044
                rol     ebx, 0Ch
6045
                add     ebx, eax
6046
                xor     edi, ebx
6047
                and     edi, edx
6048
                add     eax, [esi+2Ch]
6049
                xor     edi, ecx
6050
                rol     ecx, 0Ah
6051
                lea     eax, [eax+edi-70E44324h]
6052
                mov     edi, ebx
6053
                rol     eax, 0Eh
6054
                add     eax, ebp
6055
                xor     edi, eax
6056
                and     edi, ecx
6057
                add     ebp, [esi+28h]
6058
                xor     edi, ebx
6059
                rol     ebx, 0Ah
6060
                lea     ebp, [ebp+edi-70E44324h]
6061
                mov     edi, eax
6062
                rol     ebp, 0Fh
6063
                add     ebp, edx
6064
                xor     edi, ebp
6065
                and     edi, ebx
6066
                add     edx, [esi]
6067
                xor     edi, eax
6068
                rol     eax, 0Ah
6069
                lea     edx, [edx+edi-70E44324h]
6070
                mov     edi, ebp
6071
                rol     edx, 0Eh
6072
                add     edx, ecx
6073
                xor     edi, edx
6074
                and     edi, eax
6075
                add     ecx, [esi+20h]
6076
                xor     edi, ebp
6077
                rol     ebp, 0Ah
6078
                lea     ecx, [ecx+edi-70E44324h]
6079
                mov     edi, edx
6080
                rol     ecx, 0Fh
6081
                add     ecx, ebx
6082
                xor     edi, ecx
6083
                and     edi, ebp
6084
                add     ebx, [esi+30h]
6085
                xor     edi, edx
6086
                rol     edx, 0Ah
6087
                lea     ebx, [ebx+edi-70E44324h]
6088
                mov     edi, ecx
6089
                rol     ebx, 9
6090
                add     ebx, eax
6091
                xor     edi, ebx
6092
                and     edi, edx
6093
                add     eax, [esi+10h]
6094
                xor     edi, ecx
6095
                rol     ecx, 0Ah
6096
                lea     eax, [eax+edi-70E44324h]
6097
                mov     edi, ebx
6098
                rol     eax, 8
6099
                add     eax, ebp
6100
                xor     edi, eax
6101
                and     edi, ecx
6102
                add     ebp, [esi+34h]
6103
                xor     edi, ebx
6104
                rol     ebx, 0Ah
6105
                lea     ebp, [ebp+edi-70E44324h]
6106
                mov     edi, eax
6107
                rol     ebp, 9
6108
                add     ebp, edx
6109
                xor     edi, ebp
6110
                and     edi, ebx
6111
                add     edx, [esi+0Ch]
6112
                xor     edi, eax
6113
                rol     eax, 0Ah
6114
                lea     edx, [edx+edi-70E44324h]
6115
                mov     edi, ebp
6116
                rol     edx, 0Eh
6117
                add     edx, ecx
6118
                xor     edi, edx
6119
                and     edi, eax
6120
                add     ecx, [esi+1Ch]
6121
                xor     edi, ebp
6122
                rol     ebp, 0Ah
6123
                lea     ecx, [ecx+edi-70E44324h]
6124
                mov     edi, edx
6125
                rol     ecx, 5
6126
                add     ecx, ebx
6127
                xor     edi, ecx
6128
                and     edi, ebp
6129
                add     ebx, [esi+3Ch]
6130
                xor     edi, edx
6131
                rol     edx, 0Ah
6132
                lea     ebx, [ebx+edi-70E44324h]
6133
                mov     edi, ecx
6134
                rol     ebx, 6
6135
                add     ebx, eax
6136
                xor     edi, ebx
6137
                and     edi, edx
6138
                add     eax, [esi+38h]
6139
                xor     edi, ecx
6140
                rol     ecx, 0Ah
6141
                lea     eax, [eax+edi-70E44324h]
6142
                mov     edi, ebx
6143
                rol     eax, 8
6144
                add     eax, ebp
6145
                xor     edi, eax
6146
                and     edi, ecx
6147
                add     ebp, [esi+14h]
6148
                xor     edi, ebx
6149
                rol     ebx, 0Ah
6150
                lea     ebp, [ebp+edi-70E44324h]
6151
                mov     edi, eax
6152
                rol     ebp, 6
6153
                add     ebp, edx
6154
                xor     edi, ebp
6155
                and     edi, ebx
6156
                add     edx, [esi+18h]
6157
                xor     edi, eax
6158
                rol     eax, 0Ah
6159
                lea     edx, [edx+edi-70E44324h]
6160
                mov     edi, ebp
6161
                rol     edx, 5
6162
                add     edx, ecx
6163
                xor     edi, edx
6164
                and     edi, eax
6165
                add     ecx, [esi+8]
6166
                xor     edi, ebp
6167
                rol     ebp, 0Ah
6168
                lea     ecx, [ecx+edi-70E44324h]
6169
                rol     ecx, 0Ch
6170
                add     ecx, ebx
6171
                mov     [esp], eax
6172
                mov     [esp+4], ebx
6173
                mov     eax, [esp+14h]
6174
                mov     ebx, [esp+18h]
6175
                mov     [esp+8], ecx
6176
                mov     [esp+0Ch], edx
6177
                mov     ecx, [esp+1Ch]
6178
                mov     edx, [esp+20h]
6179
                mov     [esp+10h], ebp
6180
                mov     ebp, [esp+24h]
6181
                mov     edi, eax
6182
                xor     edi, ebp
6183
                add     ecx, [esi+20h]
6184
                and     edi, edx
6185
                xor     edi, eax
6186
                rol     ebp, 0Ah
6187
                lea     ecx, [ecx+edi+7A6D76E9h]
6188
                mov     edi, ebp
6189
                rol     ecx, 0Fh
6190
                add     ecx, ebx
6191
                xor     edi, edx
6192
                add     ebx, [esi+18h]
6193
                and     edi, ecx
6194
                xor     edi, ebp
6195
                rol     edx, 0Ah
6196
                lea     ebx, [ebx+edi+7A6D76E9h]
6197
                mov     edi, edx
6198
                rol     ebx, 5
6199
                add     ebx, eax
6200
                xor     edi, ecx
6201
                add     eax, [esi+10h]
6202
                and     edi, ebx
6203
                xor     edi, edx
6204
                rol     ecx, 0Ah
6205
                lea     eax, [eax+edi+7A6D76E9h]
6206
                mov     edi, ecx
6207
                rol     eax, 8
6208
                add     eax, ebp
6209
                xor     edi, ebx
6210
                add     ebp, [esi+4]
6211
                and     edi, eax
6212
                xor     edi, ecx
6213
                rol     ebx, 0Ah
6214
                lea     ebp, [ebp+edi+7A6D76E9h]
6215
                mov     edi, ebx
6216
                rol     ebp, 0Bh
6217
                add     ebp, edx
6218
                xor     edi, eax
6219
                add     edx, [esi+0Ch]
6220
                and     edi, ebp
6221
                xor     edi, ebx
6222
                rol     eax, 0Ah
6223
                lea     edx, [edx+edi+7A6D76E9h]
6224
                mov     edi, eax
6225
                rol     edx, 0Eh
6226
                add     edx, ecx
6227
                xor     edi, ebp
6228
                add     ecx, [esi+2Ch]
6229
                and     edi, edx
6230
                xor     edi, eax
6231
                rol     ebp, 0Ah
6232
                lea     ecx, [ecx+edi+7A6D76E9h]
6233
                mov     edi, ebp
6234
                rol     ecx, 0Eh
6235
                add     ecx, ebx
6236
                xor     edi, edx
6237
                add     ebx, [esi+3Ch]
6238
                and     edi, ecx
6239
                xor     edi, ebp
6240
                rol     edx, 0Ah
6241
                lea     ebx, [ebx+edi+7A6D76E9h]
6242
                mov     edi, edx
6243
                rol     ebx, 6
6244
                add     ebx, eax
6245
                xor     edi, ecx
6246
                add     eax, [esi]
6247
                and     edi, ebx
6248
                xor     edi, edx
6249
                rol     ecx, 0Ah
6250
                lea     eax, [eax+edi+7A6D76E9h]
6251
                mov     edi, ecx
6252
                rol     eax, 0Eh
6253
                add     eax, ebp
6254
                xor     edi, ebx
6255
                add     ebp, [esi+14h]
6256
                and     edi, eax
6257
                xor     edi, ecx
6258
                rol     ebx, 0Ah
6259
                lea     ebp, [ebp+edi+7A6D76E9h]
6260
                mov     edi, ebx
6261
                rol     ebp, 6
6262
                add     ebp, edx
6263
                xor     edi, eax
6264
                add     edx, [esi+30h]
6265
                and     edi, ebp
6266
                xor     edi, ebx
6267
                rol     eax, 0Ah
6268
                lea     edx, [edx+edi+7A6D76E9h]
6269
                mov     edi, eax
6270
                rol     edx, 9
6271
                add     edx, ecx
6272
                xor     edi, ebp
6273
                add     ecx, [esi+8]
6274
                and     edi, edx
6275
                xor     edi, eax
6276
                rol     ebp, 0Ah
6277
                lea     ecx, [ecx+edi+7A6D76E9h]
6278
                mov     edi, ebp
6279
                rol     ecx, 0Ch
6280
                add     ecx, ebx
6281
                xor     edi, edx
6282
                add     ebx, [esi+34h]
6283
                and     edi, ecx
6284
                xor     edi, ebp
6285
                rol     edx, 0Ah
6286
                lea     ebx, [ebx+edi+7A6D76E9h]
6287
                mov     edi, edx
6288
                rol     ebx, 9
6289
                add     ebx, eax
6290
                xor     edi, ecx
6291
                add     eax, [esi+24h]
6292
                and     edi, ebx
6293
                xor     edi, edx
6294
                rol     ecx, 0Ah
6295
                lea     eax, [eax+edi+7A6D76E9h]
6296
                mov     edi, ecx
6297
                rol     eax, 0Ch
6298
                add     eax, ebp
6299
                xor     edi, ebx
6300
                add     ebp, [esi+1Ch]
6301
                and     edi, eax
6302
                xor     edi, ecx
6303
                rol     ebx, 0Ah
6304
                lea     ebp, [ebp+edi+7A6D76E9h]
6305
                mov     edi, ebx
6306
                rol     ebp, 5
6307
                add     ebp, edx
6308
                xor     edi, eax
6309
                add     edx, [esi+28h]
6310
                and     edi, ebp
6311
                xor     edi, ebx
6312
                rol     eax, 0Ah
6313
                lea     edx, [edx+edi+7A6D76E9h]
6314
                mov     edi, eax
6315
                rol     edx, 0Fh
6316
                add     edx, ecx
6317
                xor     edi, ebp
6318
                add     ecx, [esi+38h]
6319
                and     edi, edx
6320
                xor     edi, eax
6321
                rol     ebp, 0Ah
6322
                lea     ecx, [ecx+edi+7A6D76E9h]
6323
                rol     ecx, 8
6324
                add     ecx, ebx
6325
                mov     [esp+14h], eax
6326
                mov     [esp+18h], ebx
6327
                mov     eax, [esp]
6328
                mov     ebx, [esp+4]
6329
                mov     [esp+1Ch], ecx
6330
                mov     [esp+24h], ebp
6331
                mov     ecx, [esp+8]
6332
                mov     ebp, [esp+0Ch]
6333
                mov     [esp+20h], ebp
6334
                mov     ebp, [esp+10h]
6335
                mov     edi, ebp
6336
                xor     edi, 0FFFFFFFFh
6337
                or      edi, edx
6338
                add     ebx, [esi+10h]
6339
                xor     edi, ecx
6340
                rol     edx, 0Ah
6341
                lea     ebx, [ebx+edi-56AC02B2h]
6342
                mov     edi, edx
6343
                rol     ebx, 9
6344
                add     ebx, eax
6345
                xor     edi, 0FFFFFFFFh
6346
                or      edi, ecx
6347
                add     eax, [esi]
6348
                xor     edi, ebx
6349
                rol     ecx, 0Ah
6350
                lea     eax, [eax+edi-56AC02B2h]
6351
                mov     edi, ecx
6352
                rol     eax, 0Fh
6353
                add     eax, ebp
6354
                xor     edi, 0FFFFFFFFh
6355
                or      edi, ebx
6356
                add     ebp, [esi+14h]
6357
                xor     edi, eax
6358
                rol     ebx, 0Ah
6359
                lea     ebp, [ebp+edi-56AC02B2h]
6360
                mov     edi, ebx
6361
                rol     ebp, 5
6362
                add     ebp, edx
6363
                xor     edi, 0FFFFFFFFh
6364
                or      edi, eax
6365
                add     edx, [esi+24h]
6366
                xor     edi, ebp
6367
                rol     eax, 0Ah
6368
                lea     edx, [edx+edi-56AC02B2h]
6369
                mov     edi, eax
6370
                rol     edx, 0Bh
6371
                add     edx, ecx
6372
                xor     edi, 0FFFFFFFFh
6373
                or      edi, ebp
6374
                add     ecx, [esi+1Ch]
6375
                xor     edi, edx
6376
                rol     ebp, 0Ah
6377
                lea     ecx, [ecx+edi-56AC02B2h]
6378
                mov     edi, ebp
6379
                rol     ecx, 6
6380
                add     ecx, ebx
6381
                xor     edi, 0FFFFFFFFh
6382
                or      edi, edx
6383
                add     ebx, [esi+30h]
6384
                xor     edi, ecx
6385
                rol     edx, 0Ah
6386
                lea     ebx, [ebx+edi-56AC02B2h]
6387
                mov     edi, edx
6388
                rol     ebx, 8
6389
                add     ebx, eax
6390
                xor     edi, 0FFFFFFFFh
6391
                or      edi, ecx
6392
                add     eax, [esi+8]
6393
                xor     edi, ebx
6394
                rol     ecx, 0Ah
6395
                lea     eax, [eax+edi-56AC02B2h]
6396
                mov     edi, ecx
6397
                rol     eax, 0Dh
6398
                add     eax, ebp
6399
                xor     edi, 0FFFFFFFFh
6400
                or      edi, ebx
6401
                add     ebp, [esi+28h]
6402
                xor     edi, eax
6403
                rol     ebx, 0Ah
6404
                lea     ebp, [ebp+edi-56AC02B2h]
6405
                mov     edi, ebx
6406
                rol     ebp, 0Ch
6407
                add     ebp, edx
6408
                xor     edi, 0FFFFFFFFh
6409
                or      edi, eax
6410
                add     edx, [esi+38h]
6411
                xor     edi, ebp
6412
                rol     eax, 0Ah
6413
                lea     edx, [edx+edi-56AC02B2h]
6414
                mov     edi, eax
6415
                rol     edx, 5
6416
                add     edx, ecx
6417
                xor     edi, 0FFFFFFFFh
6418
                or      edi, ebp
6419
                add     ecx, [esi+4]
6420
                xor     edi, edx
6421
                rol     ebp, 0Ah
6422
                lea     ecx, [ecx+edi-56AC02B2h]
6423
                mov     edi, ebp
6424
                rol     ecx, 0Ch
6425
                add     ecx, ebx
6426
                xor     edi, 0FFFFFFFFh
6427
                or      edi, edx
6428
                add     ebx, [esi+0Ch]
6429
                xor     edi, ecx
6430
                rol     edx, 0Ah
6431
                lea     ebx, [ebx+edi-56AC02B2h]
6432
                mov     edi, edx
6433
                rol     ebx, 0Dh
6434
                add     ebx, eax
6435
                xor     edi, 0FFFFFFFFh
6436
                or      edi, ecx
6437
                add     eax, [esi+20h]
6438
                xor     edi, ebx
6439
                rol     ecx, 0Ah
6440
                lea     eax, [eax+edi-56AC02B2h]
6441
                mov     edi, ecx
6442
                rol     eax, 0Eh
6443
                add     eax, ebp
6444
                xor     edi, 0FFFFFFFFh
6445
                or      edi, ebx
6446
                add     ebp, [esi+2Ch]
6447
                xor     edi, eax
6448
                rol     ebx, 0Ah
6449
                lea     ebp, [ebp+edi-56AC02B2h]
6450
                mov     edi, ebx
6451
                rol     ebp, 0Bh
6452
                add     ebp, edx
6453
                xor     edi, 0FFFFFFFFh
6454
                or      edi, eax
6455
                add     edx, [esi+18h]
6456
                xor     edi, ebp
6457
                rol     eax, 0Ah
6458
                lea     edx, [edx+edi-56AC02B2h]
6459
                mov     edi, eax
6460
                rol     edx, 8
6461
                add     edx, ecx
6462
                xor     edi, 0FFFFFFFFh
6463
                or      edi, ebp
6464
                add     ecx, [esi+3Ch]
6465
                xor     edi, edx
6466
                rol     ebp, 0Ah
6467
                lea     ecx, [ecx+edi-56AC02B2h]
6468
                mov     edi, ebp
6469
                rol     ecx, 5
6470
                add     ecx, ebx
6471
                xor     edi, 0FFFFFFFFh
6472
                or      edi, edx
6473
                add     ebx, [esi+34h]
6474
                xor     edi, ecx
6475
                rol     edx, 0Ah
6476
                lea     ebx, [ebx+edi-56AC02B2h]
6477
                rol     ebx, 6
6478
                add     ebx, eax
6479
                mov     [esp], eax
6480
                mov     [esp+4], ebx
6481
                mov     eax, [esp+14h]
6482
                mov     ebx, [esp+18h]
6483
                mov     [esp+8], ecx
6484
                mov     [esp+0Ch], edx
6485
                mov     ecx, [esp+1Ch]
6486
                mov     edx, [esp+20h]
6487
                mov     [esp+10h], ebp
6488
                mov     ebp, [esp+24h]
6489
                mov     edi, ebp
6490
                xor     edi, edx
6491
                xor     edi, ecx
6492
                add     ebx, [esi+30h]
6493
                rol     edx, 0Ah
6494
                add     ebx, edi
6495
                mov     edi, edx
6496
                rol     ebx, 8
6497
                add     ebx, eax
6498
                xor     edi, ecx
6499
                xor     edi, ebx
6500
                add     eax, [esi+3Ch]
6501
                rol     ecx, 0Ah
6502
                add     eax, edi
6503
                mov     edi, ecx
6504
                rol     eax, 5
6505
                add     eax, ebp
6506
                xor     edi, ebx
6507
                xor     edi, eax
6508
                add     ebp, [esi+28h]
6509
                rol     ebx, 0Ah
6510
                add     ebp, edi
6511
                mov     edi, ebx
6512
                rol     ebp, 0Ch
6513
                add     ebp, edx
6514
                xor     edi, eax
6515
                xor     edi, ebp
6516
                add     edx, [esi+10h]
6517
                rol     eax, 0Ah
6518
                add     edx, edi
6519
                mov     edi, eax
6520
                rol     edx, 9
6521
                add     edx, ecx
6522
                xor     edi, ebp
6523
                xor     edi, edx
6524
                add     ecx, [esi+4]
6525
                rol     ebp, 0Ah
6526
                add     ecx, edi
6527
                mov     edi, ebp
6528
                rol     ecx, 0Ch
6529
                add     ecx, ebx
6530
                xor     edi, edx
6531
                xor     edi, ecx
6532
                add     ebx, [esi+14h]
6533
                rol     edx, 0Ah
6534
                add     ebx, edi
6535
                mov     edi, edx
6536
                rol     ebx, 5
6537
                add     ebx, eax
6538
                xor     edi, ecx
6539
                xor     edi, ebx
6540
                add     eax, [esi+20h]
6541
                rol     ecx, 0Ah
6542
                add     eax, edi
6543
                mov     edi, ecx
6544
                rol     eax, 0Eh
6545
                add     eax, ebp
6546
                xor     edi, ebx
6547
                xor     edi, eax
6548
                add     ebp, [esi+1Ch]
6549
                rol     ebx, 0Ah
6550
                add     ebp, edi
6551
                mov     edi, ebx
6552
                rol     ebp, 6
6553
                add     ebp, edx
6554
                xor     edi, eax
6555
                xor     edi, ebp
6556
                add     edx, [esi+18h]
6557
                rol     eax, 0Ah
6558
                add     edx, edi
6559
                mov     edi, eax
6560
                rol     edx, 8
6561
                add     edx, ecx
6562
                xor     edi, ebp
6563
                xor     edi, edx
6564
                add     ecx, [esi+8]
6565
                rol     ebp, 0Ah
6566
                add     ecx, edi
6567
                mov     edi, ebp
6568
                rol     ecx, 0Dh
6569
                add     ecx, ebx
6570
                xor     edi, edx
6571
                xor     edi, ecx
6572
                add     ebx, [esi+34h]
6573
                rol     edx, 0Ah
6574
                add     ebx, edi
6575
                mov     edi, edx
6576
                rol     ebx, 6
6577
                add     ebx, eax
6578
                xor     edi, ecx
6579
                xor     edi, ebx
6580
                add     eax, [esi+38h]
6581
                rol     ecx, 0Ah
6582
                add     eax, edi
6583
                mov     edi, ecx
6584
                rol     eax, 5
6585
                add     eax, ebp
6586
                xor     edi, ebx
6587
                xor     edi, eax
6588
                add     ebp, [esi]
6589
                rol     ebx, 0Ah
6590
                add     ebp, edi
6591
                mov     edi, ebx
6592
                rol     ebp, 0Fh
6593
                add     ebp, edx
6594
                xor     edi, eax
6595
                xor     edi, ebp
6596
                add     edx, [esi+0Ch]
6597
                rol     eax, 0Ah
6598
                add     edx, edi
6599
                mov     edi, eax
6600
                rol     edx, 0Dh
6601
                add     edx, ecx
6602
                xor     edi, ebp
6603
                xor     edi, edx
6604
                add     ecx, [esi+24h]
6605
                rol     ebp, 0Ah
6606
                add     ecx, edi
6607
                mov     edi, ebp
6608
                rol     ecx, 0Bh
6609
                add     ecx, ebx
6610
                xor     edi, edx
6611
                xor     edi, ecx
6612
                add     ebx, [esi+2Ch]
6613
                rol     edx, 0Ah
6614
                add     ebx, edi
6615
                rol     ebx, 0Bh
6616
                add     ebx, eax
6617
                mov     edi, [esp+28h]
6618
                add     [edi+10h], ebp
6619
                add     [edi+14h], eax
6620
                add     [edi+18h], ebx
6621
                mov     eax, [esp]
6622
                mov     ebx, [esp+4]
6623
                add     [edi+1Ch], ecx
6624
                mov     ebp, [esp+10h]
6625
                add     [edi+20h], edx
6626
                mov     ecx, [esp+8]
6627
                mov     edx, [esp+0Ch]
6628
                add     [edi], eax
6629
                add     [edi+4], ebx
6630
                add     esp, 2Ch
6631
                add     [edi+8], ecx
6632
                add     [edi+0Ch], edx
6633
                add     [edi+24h], ebp
6634
                pop     ebp
6635
                pop     edi
6636
                pop     esi
6637
                pop     ebx
6638
end;
6639
{$ENDIF}
6640
6641
{$IFDEF THash_SHA_asm}
6642
procedure SHABuffer(W,S: PUInt32Array; Rotate: Boolean);
6643
var
6644
  I: Integer;
6645
  T: UInt32; //LongWord;
6646
begin
6647
  SwapUInt32Buffer(S[0], W[0], 16);
6648
  if Rotate then
6649
    for I := 16 to 79 do
6650
    begin
6651
      T := W[I - 3] xor W[I - 8] xor W[I - 14] xor W[I - 16];
6652
      W[I] := T shl 1 or T shr 31;
6653
    end
6654
  else
6655
    for I := 16 to 79 do
6656
    begin
6657
      T := W[I - 3] xor W[I - 8] xor W[I - 14] xor W[I - 16];
6658
      W[I] := T;
6659
    end
6660
end;
6661
6662
procedure THash_SHA0.DoTransform(Buffer: PUInt32Array);
6663
var
6664
  W: array[0..79] of LongWord;
6665
begin
6666
  SHABuffer(PUInt32Array(@W), Buffer, ClassType <> THash_SHA0);
6667
6668
  asm
6669
                push    ebx
6670
                mov     eax, Self
6671
                push    esi
6672
                push    edi
6673
                lea     edi, [eax].THash_SHA0.FDigest
6674
                lea     esi, W
6675
                push    ebp
6676
6677
                sub     esp, 8
6678
                mov     eax, [edi]
6679
                mov     ebx, [edi+4]
6680
                mov     ecx, [edi+8]
6681
                mov     [esp], edi
6682
                mov     edx, [edi+0Ch]
6683
                mov     ebp, [edi+10h]
6684
                mov     [esp+4], esi
6685
                mov     edi, ecx
6686
                xor     edi, edx
6687
                and     edi, ebx
6688
                add     ebp, [esi]
6689
                xor     edi, edx
6690
                ror     ebx, 2
6691
                lea     ebp, [ebp+edi+5A827999h]
6692
                mov     edi, eax
6693
                rol     edi, 5
6694
                add     ebp, edi
6695
                mov     edi, ecx
6696
                xor     edi, ebx
6697
                and     edi, eax
6698
                add     edx, [esi+4]
6699
                xor     edi, ecx
6700
                ror     eax, 2
6701
                lea     edx, [edx+edi+5A827999h]
6702
                mov     edi, ebp
6703
                rol     edi, 5
6704
                add     edx, edi
6705
                mov     edi, ebx
6706
                xor     edi, eax
6707
                and     edi, ebp
6708
                add     ecx, [esi+8]
6709
                xor     edi, ebx
6710
                ror     ebp, 2
6711
                lea     ecx, [ecx+edi+5A827999h]
6712
                mov     edi, edx
6713
                rol     edi, 5
6714
                add     ecx, edi
6715
                mov     edi, eax
6716
                xor     edi, ebp
6717
                and     edi, edx
6718
                add     ebx, [esi+0Ch]
6719
                xor     edi, eax
6720
                ror     edx, 2
6721
                lea     ebx, [ebx+edi+5A827999h]
6722
                mov     edi, ecx
6723
                rol     edi, 5
6724
                add     ebx, edi
6725
                mov     edi, ebp
6726
                xor     edi, edx
6727
                and     edi, ecx
6728
                add     eax, [esi+10h]
6729
                xor     edi, ebp
6730
                ror     ecx, 2
6731
                lea     eax, [eax+edi+5A827999h]
6732
                mov     edi, ebx
6733
                rol     edi, 5
6734
                add     eax, edi
6735
                mov     edi, edx
6736
                xor     edi, ecx
6737
                and     edi, ebx
6738
                add     ebp, [esi+14h]
6739
                xor     edi, edx
6740
                ror     ebx, 2
6741
                lea     ebp, [ebp+edi+5A827999h]
6742
                mov     edi, eax
6743
                rol     edi, 5
6744
                add     ebp, edi
6745
                mov     edi, ecx
6746
                xor     edi, ebx
6747
                and     edi, eax
6748
                add     edx, [esi+18h]
6749
                xor     edi, ecx
6750
                ror     eax, 2
6751
                lea     edx, [edx+edi+5A827999h]
6752
                mov     edi, ebp
6753
                rol     edi, 5
6754
                add     edx, edi
6755
                mov     edi, ebx
6756
                xor     edi, eax
6757
                and     edi, ebp
6758
                add     ecx, [esi+1Ch]
6759
                xor     edi, ebx
6760
                ror     ebp, 2
6761
                lea     ecx, [ecx+edi+5A827999h]
6762
                mov     edi, edx
6763
                rol     edi, 5
6764
                add     ecx, edi
6765
                mov     edi, eax
6766
                xor     edi, ebp
6767
                and     edi, edx
6768
                add     ebx, [esi+20h]
6769
                xor     edi, eax
6770
                ror     edx, 2
6771
                lea     ebx, [ebx+edi+5A827999h]
6772
                mov     edi, ecx
6773
                rol     edi, 5
6774
                add     ebx, edi
6775
                mov     edi, ebp
6776
                xor     edi, edx
6777
                and     edi, ecx
6778
                add     eax, [esi+24h]
6779
                xor     edi, ebp
6780
                ror     ecx, 2
6781
                lea     eax, [eax+edi+5A827999h]
6782
                mov     edi, ebx
6783
                rol     edi, 5
6784
                add     eax, edi
6785
                mov     edi, edx
6786
                xor     edi, ecx
6787
                and     edi, ebx
6788
                add     ebp, [esi+28h]
6789
                xor     edi, edx
6790
                ror     ebx, 2
6791
                lea     ebp, [ebp+edi+5A827999h]
6792
                mov     edi, eax
6793
                rol     edi, 5
6794
                add     ebp, edi
6795
                mov     edi, ecx
6796
                xor     edi, ebx
6797
                and     edi, eax
6798
                add     edx, [esi+2Ch]
6799
                xor     edi, ecx
6800
                ror     eax, 2
6801
                lea     edx, [edx+edi+5A827999h]
6802
                mov     edi, ebp
6803
                rol     edi, 5
6804
                add     edx, edi
6805
                mov     edi, ebx
6806
                xor     edi, eax
6807
                and     edi, ebp
6808
                add     ecx, [esi+30h]
6809
                xor     edi, ebx
6810
                ror     ebp, 2
6811
                lea     ecx, [ecx+edi+5A827999h]
6812
                mov     edi, edx
6813
                rol     edi, 5
6814
                add     ecx, edi
6815
                mov     edi, eax
6816
                xor     edi, ebp
6817
                and     edi, edx
6818
                add     ebx, [esi+34h]
6819
                xor     edi, eax
6820
                ror     edx, 2
6821
                lea     ebx, [ebx+edi+5A827999h]
6822
                mov     edi, ecx
6823
                rol     edi, 5
6824
                add     ebx, edi
6825
                mov     edi, ebp
6826
                xor     edi, edx
6827
                and     edi, ecx
6828
                add     eax, [esi+38h]
6829
                xor     edi, ebp
6830
                ror     ecx, 2
6831
                lea     eax, [eax+edi+5A827999h]
6832
                mov     edi, ebx
6833
                rol     edi, 5
6834
                add     eax, edi
6835
                mov     edi, edx
6836
                xor     edi, ecx
6837
                and     edi, ebx
6838
                add     ebp, [esi+3Ch]
6839
                xor     edi, edx
6840
                ror     ebx, 2
6841
                lea     ebp, [ebp+edi+5A827999h]
6842
                mov     edi, eax
6843
                rol     edi, 5
6844
                add     ebp, edi
6845
                mov     edi, ecx
6846
                xor     edi, ebx
6847
                and     edi, eax
6848
                add     edx, [esi+40h]
6849
                xor     edi, ecx
6850
                ror     eax, 2
6851
                lea     edx, [edx+edi+5A827999h]
6852
                mov     edi, ebp
6853
                rol     edi, 5
6854
                add     edx, edi
6855
                mov     edi, ebx
6856
                xor     edi, eax
6857
                and     edi, ebp
6858
                add     ecx, [esi+44h]
6859
                xor     edi, ebx
6860
                ror     ebp, 2
6861
                lea     ecx, [ecx+edi+5A827999h]
6862
                mov     edi, edx
6863
                rol     edi, 5
6864
                add     ecx, edi
6865
                mov     edi, eax
6866
                xor     edi, ebp
6867
                and     edi, edx
6868
                add     ebx, [esi+48h]
6869
                xor     edi, eax
6870
                ror     edx, 2
6871
                lea     ebx, [ebx+edi+5A827999h]
6872
                mov     edi, ecx
6873
                rol     edi, 5
6874
                add     ebx, edi
6875
                mov     edi, ebp
6876
                xor     edi, edx
6877
                and     edi, ecx
6878
                add     eax, [esi+4Ch]
6879
                xor     edi, ebp
6880
                ror     ecx, 2
6881
                lea     eax, [eax+edi+5A827999h]
6882
                mov     edi, ebx
6883
                rol     edi, 5
6884
                add     eax, edi
6885
                mov     edi, edx
6886
                xor     edi, ecx
6887
                xor     edi, ebx
6888
                add     ebp, edi
6889
                mov     edi, [esi+50h]
6890
                ror     ebx, 2
6891
                lea     ebp, [ebp+edi+6ED9EBA1h]
6892
                mov     edi, eax
6893
                rol     edi, 5
6894
                add     ebp, edi
6895
                mov     edi, ecx
6896
                xor     edi, ebx
6897
                xor     edi, eax
6898
                add     edx, edi
6899
                mov     edi, [esi+54h]
6900
                ror     eax, 2
6901
                lea     edx, [edx+edi+6ED9EBA1h]
6902
                mov     edi, ebp
6903
                rol     edi, 5
6904
                add     edx, edi
6905
                mov     edi, ebx
6906
                xor     edi, eax
6907
                xor     edi, ebp
6908
                add     ecx, edi
6909
                mov     edi, [esi+58h]
6910
                ror     ebp, 2
6911
                lea     ecx, [ecx+edi+6ED9EBA1h]
6912
                mov     edi, edx
6913
                rol     edi, 5
6914
                add     ecx, edi
6915
                mov     edi, eax
6916
                xor     edi, ebp
6917
                xor     edi, edx
6918
                add     ebx, edi
6919
                mov     edi, [esi+5Ch]
6920
                ror     edx, 2
6921
                lea     ebx, [ebx+edi+6ED9EBA1h]
6922
                mov     edi, ecx
6923
                rol     edi, 5
6924
                add     ebx, edi
6925
                mov     edi, ebp
6926
                xor     edi, edx
6927
                xor     edi, ecx
6928
                add     eax, edi
6929
                mov     edi, [esi+60h]
6930
                ror     ecx, 2
6931
                lea     eax, [eax+edi+6ED9EBA1h]
6932
                mov     edi, ebx
6933
                rol     edi, 5
6934
                add     eax, edi
6935
                mov     edi, edx
6936
                xor     edi, ecx
6937
                xor     edi, ebx
6938
                add     ebp, edi
6939
                mov     edi, [esi+64h]
6940
                ror     ebx, 2
6941
                lea     ebp, [ebp+edi+6ED9EBA1h]
6942
                mov     edi, eax
6943
                rol     edi, 5
6944
                add     ebp, edi
6945
                mov     edi, ecx
6946
                xor     edi, ebx
6947
                xor     edi, eax
6948
                add     edx, edi
6949
                mov     edi, [esi+68h]
6950
                ror     eax, 2
6951
                lea     edx, [edx+edi+6ED9EBA1h]
6952
                mov     edi, ebp
6953
                rol     edi, 5
6954
                add     edx, edi
6955
                mov     edi, ebx
6956
                xor     edi, eax
6957
                xor     edi, ebp
6958
                add     ecx, edi
6959
                mov     edi, [esi+6Ch]
6960
                ror     ebp, 2
6961
                lea     ecx, [ecx+edi+6ED9EBA1h]
6962
                mov     edi, edx
6963
                rol     edi, 5
6964
                add     ecx, edi
6965
                mov     edi, eax
6966
                xor     edi, ebp
6967
                xor     edi, edx
6968
                add     ebx, edi
6969
                mov     edi, [esi+70h]
6970
                ror     edx, 2
6971
                lea     ebx, [ebx+edi+6ED9EBA1h]
6972
                mov     edi, ecx
6973
                rol     edi, 5
6974
                add     ebx, edi
6975
                mov     edi, ebp
6976
                xor     edi, edx
6977
                xor     edi, ecx
6978
                add     eax, edi
6979
                mov     edi, [esi+74h]
6980
                ror     ecx, 2
6981
                lea     eax, [eax+edi+6ED9EBA1h]
6982
                mov     edi, ebx
6983
                rol     edi, 5
6984
                add     eax, edi
6985
                mov     edi, edx
6986
                xor     edi, ecx
6987
                xor     edi, ebx
6988
                add     ebp, edi
6989
                mov     edi, [esi+78h]
6990
                ror     ebx, 2
6991
                lea     ebp, [ebp+edi+6ED9EBA1h]
6992
                mov     edi, eax
6993
                rol     edi, 5
6994
                add     ebp, edi
6995
                mov     edi, ecx
6996
                xor     edi, ebx
6997
                xor     edi, eax
6998
                add     edx, edi
6999
                mov     edi, [esi+7Ch]
7000
                ror     eax, 2
7001
                lea     edx, [edx+edi+6ED9EBA1h]
7002
                mov     edi, ebp
7003
                rol     edi, 5
7004
                add     edx, edi
7005
                mov     edi, ebx
7006
                xor     edi, eax
7007
                xor     edi, ebp
7008
                add     ecx, edi
7009
                mov     edi, [esi+80h]
7010
                ror     ebp, 2
7011
                lea     ecx, [ecx+edi+6ED9EBA1h]
7012
                mov     edi, edx
7013
                rol     edi, 5
7014
                add     ecx, edi
7015
                mov     edi, eax
7016
                xor     edi, ebp
7017
                xor     edi, edx
7018
                add     ebx, edi
7019
                mov     edi, [esi+84h]
7020
                ror     edx, 2
7021
                lea     ebx, [ebx+edi+6ED9EBA1h]
7022
                mov     edi, ecx
7023
                rol     edi, 5
7024
                add     ebx, edi
7025
                mov     edi, ebp
7026
                xor     edi, edx
7027
                xor     edi, ecx
7028
                add     eax, edi
7029
                mov     edi, [esi+88h]
7030
                ror     ecx, 2
7031
                lea     eax, [eax+edi+6ED9EBA1h]
7032
                mov     edi, ebx
7033
                rol     edi, 5
7034
                add     eax, edi
7035
                mov     edi, edx
7036
                xor     edi, ecx
7037
                xor     edi, ebx
7038
                add     ebp, edi
7039
                mov     edi, [esi+8Ch]
7040
                ror     ebx, 2
7041
                lea     ebp, [ebp+edi+6ED9EBA1h]
7042
                mov     edi, eax
7043
                rol     edi, 5
7044
                add     ebp, edi
7045
                mov     edi, ecx
7046
                xor     edi, ebx
7047
                xor     edi, eax
7048
                add     edx, edi
7049
                mov     edi, [esi+90h]
7050
                ror     eax, 2
7051
                lea     edx, [edx+edi+6ED9EBA1h]
7052
                mov     edi, ebp
7053
                rol     edi, 5
7054
                add     edx, edi
7055
                mov     edi, ebx
7056
                xor     edi, eax
7057
                xor     edi, ebp
7058
                add     ecx, edi
7059
                mov     edi, [esi+94h]
7060
                ror     ebp, 2
7061
                lea     ecx, [ecx+edi+6ED9EBA1h]
7062
                mov     edi, edx
7063
                rol     edi, 5
7064
                add     ecx, edi
7065
                mov     edi, eax
7066
                xor     edi, ebp
7067
                xor     edi, edx
7068
                add     ebx, edi
7069
                mov     edi, [esi+98h]
7070
                ror     edx, 2
7071
                lea     ebx, [ebx+edi+6ED9EBA1h]
7072
                mov     edi, ecx
7073
                rol     edi, 5
7074
                add     ebx, edi
7075
                mov     edi, ebp
7076
                xor     edi, edx
7077
                xor     edi, ecx
7078
                add     eax, edi
7079
                mov     edi, [esi+9Ch]
7080
                ror     ecx, 2
7081
                lea     eax, [eax+edi+6ED9EBA1h]
7082
                mov     edi, ebx
7083
                rol     edi, 5
7084
                add     eax, edi
7085
                mov     edi, edx
7086
                xor     edi, ecx
7087
                mov     esi, ecx
7088
                mov     edi, ecx
7089
                or      esi, edx
7090
                and     edi, edx
7091
                and     esi, ebx
7092
                or      esi, edi
7093
                mov     edi, eax
7094
                add     ebp, esi
7095
                mov     esi, [esp+4]
7096
                rol     edi, 5
7097
                add     ebp, edi
7098
                mov     edi, [esi+0A0h]
7099
                ror     ebx, 2
7100
                lea     ebp, [ebp+edi-70E44324h]
7101
                mov     esi, ebx
7102
                mov     edi, ebx
7103
                or      esi, ecx
7104
                and     edi, ecx
7105
                and     esi, eax
7106
                or      esi, edi
7107
                mov     edi, ebp
7108
                add     edx, esi
7109
                mov     esi, [esp+4]
7110
                rol     edi, 5
7111
                add     edx, edi
7112
                mov     edi, [esi+0A4h]
7113
                ror     eax, 2
7114
                lea     edx, [edx+edi-70E44324h]
7115
                mov     esi, eax
7116
                mov     edi, eax
7117
                or      esi, ebx
7118
                and     edi, ebx
7119
                and     esi, ebp
7120
                or      esi, edi
7121
                mov     edi, edx
7122
                add     ecx, esi
7123
                mov     esi, [esp+4]
7124
                rol     edi, 5
7125
                add     ecx, edi
7126
                mov     edi, [esi+0A8h]
7127
                ror     ebp, 2
7128
                lea     ecx, [ecx+edi-70E44324h]
7129
                mov     esi, ebp
7130
                mov     edi, ebp
7131
                or      esi, eax
7132
                and     edi, eax
7133
                and     esi, edx
7134
                or      esi, edi
7135
                mov     edi, ecx
7136
                add     ebx, esi
7137
                mov     esi, [esp+4]
7138
                rol     edi, 5
7139
                add     ebx, edi
7140
                mov     edi, [esi+0ACh]
7141
                ror     edx, 2
7142
                lea     ebx, [ebx+edi-70E44324h]
7143
                mov     esi, edx
7144
                mov     edi, edx
7145
                or      esi, ebp
7146
                and     edi, ebp
7147
                and     esi, ecx
7148
                or      esi, edi
7149
                mov     edi, ebx
7150
                add     eax, esi
7151
                mov     esi, [esp+4]
7152
                rol     edi, 5
7153
                add     eax, edi
7154
                mov     edi, [esi+0B0h]
7155
                ror     ecx, 2
7156
                lea     eax, [eax+edi-70E44324h]
7157
                mov     esi, ecx
7158
                mov     edi, ecx
7159
                or      esi, edx
7160
                and     edi, edx
7161
                and     esi, ebx
7162
                or      esi, edi
7163
                mov     edi, eax
7164
                add     ebp, esi
7165
                mov     esi, [esp+4]
7166
                rol     edi, 5
7167
                add     ebp, edi
7168
                mov     edi, [esi+0B4h]
7169
                ror     ebx, 2
7170
                lea     ebp, [ebp+edi-70E44324h]
7171
                mov     esi, ebx
7172
                mov     edi, ebx
7173
                or      esi, ecx
7174
                and     edi, ecx
7175
                and     esi, eax
7176
                or      esi, edi
7177
                mov     edi, ebp
7178
                add     edx, esi
7179
                mov     esi, [esp+4]
7180
                rol     edi, 5
7181
                add     edx, edi
7182
                mov     edi, [esi+0B8h]
7183
                ror     eax, 2
7184
                lea     edx, [edx+edi-70E44324h]
7185
                mov     esi, eax
7186
                mov     edi, eax
7187
                or      esi, ebx
7188
                and     edi, ebx
7189
                and     esi, ebp
7190
                or      esi, edi
7191
                mov     edi, edx
7192
                add     ecx, esi
7193
                mov     esi, [esp+4]
7194
                rol     edi, 5
7195
                add     ecx, edi
7196
                mov     edi, [esi+0BCh]
7197
                ror     ebp, 2
7198
                lea     ecx, [ecx+edi-70E44324h]
7199
                mov     esi, ebp
7200
                mov     edi, ebp
7201
                or      esi, eax
7202
                and     edi, eax
7203
                and     esi, edx
7204
                or      esi, edi
7205
                mov     edi, ecx
7206
                add     ebx, esi
7207
                mov     esi, [esp+4]
7208
                rol     edi, 5
7209
                add     ebx, edi
7210
                mov     edi, [esi+0C0h]
7211
                ror     edx, 2
7212
                lea     ebx, [ebx+edi-70E44324h]
7213
                mov     esi, edx
7214
                mov     edi, edx
7215
                or      esi, ebp
7216
                and     edi, ebp
7217
                and     esi, ecx
7218
                or      esi, edi
7219
                mov     edi, ebx
7220
                add     eax, esi
7221
                mov     esi, [esp+4]
7222
                rol     edi, 5
7223
                add     eax, edi
7224
                mov     edi, [esi+0C4h]
7225
                ror     ecx, 2
7226
                lea     eax, [eax+edi-70E44324h]
7227
                mov     esi, ecx
7228
                mov     edi, ecx
7229
                or      esi, edx
7230
                and     edi, edx
7231
                and     esi, ebx
7232
                or      esi, edi
7233
                mov     edi, eax
7234
                add     ebp, esi
7235
                mov     esi, [esp+4]
7236
                rol     edi, 5
7237
                add     ebp, edi
7238
                mov     edi, [esi+0C8h]
7239
                ror     ebx, 2
7240
                lea     ebp, [ebp+edi-70E44324h]
7241
                mov     esi, ebx
7242
                mov     edi, ebx
7243
                or      esi, ecx
7244
                and     edi, ecx
7245
                and     esi, eax
7246
                or      esi, edi
7247
                mov     edi, ebp
7248
                add     edx, esi
7249
                mov     esi, [esp+4]
7250
                rol     edi, 5
7251
                add     edx, edi
7252
                mov     edi, [esi+0CCh]
7253
                ror     eax, 2
7254
                lea     edx, [edx+edi-70E44324h]
7255
                mov     esi, eax
7256
                mov     edi, eax
7257
                or      esi, ebx
7258
                and     edi, ebx
7259
                and     esi, ebp
7260
                or      esi, edi
7261
                mov     edi, edx
7262
                add     ecx, esi
7263
                mov     esi, [esp+4]
7264
                rol     edi, 5
7265
                add     ecx, edi
7266
                mov     edi, [esi+0D0h]
7267
                ror     ebp, 2
7268
                lea     ecx, [ecx+edi-70E44324h]
7269
                mov     esi, ebp
7270
                mov     edi, ebp
7271
                or      esi, eax
7272
                and     edi, eax
7273
                and     esi, edx
7274
                or      esi, edi
7275
                mov     edi, ecx
7276
                add     ebx, esi
7277
                mov     esi, [esp+4]
7278
                rol     edi, 5
7279
                add     ebx, edi
7280
                mov     edi, [esi+0D4h]
7281
                ror     edx, 2
7282
                lea     ebx, [ebx+edi-70E44324h]
7283
                mov     esi, edx
7284
                mov     edi, edx
7285
                or      esi, ebp
7286
                and     edi, ebp
7287
                and     esi, ecx
7288
                or      esi, edi
7289
                mov     edi, ebx
7290
                add     eax, esi
7291
                mov     esi, [esp+4]
7292
                rol     edi, 5
7293
                add     eax, edi
7294
                mov     edi, [esi+0D8h]
7295
                ror     ecx, 2
7296
                lea     eax, [eax+edi-70E44324h]
7297
                mov     esi, ecx
7298
                mov     edi, ecx
7299
                or      esi, edx
7300
                and     edi, edx
7301
                and     esi, ebx
7302
                or      esi, edi
7303
                mov     edi, eax
7304
                add     ebp, esi
7305
                mov     esi, [esp+4]
7306
                rol     edi, 5
7307
                add     ebp, edi
7308
                mov     edi, [esi+0DCh]
7309
                ror     ebx, 2
7310
                lea     ebp, [ebp+edi-70E44324h]
7311
                mov     esi, ebx
7312
                mov     edi, ebx
7313
                or      esi, ecx
7314
                and     edi, ecx
7315
                and     esi, eax
7316
                or      esi, edi
7317
                mov     edi, ebp
7318
                add     edx, esi
7319
                mov     esi, [esp+4]
7320
                rol     edi, 5
7321
                add     edx, edi
7322
                mov     edi, [esi+0E0h]
7323
                ror     eax, 2
7324
                lea     edx, [edx+edi-70E44324h]
7325
                mov     esi, eax
7326
                mov     edi, eax
7327
                or      esi, ebx
7328
                and     edi, ebx
7329
                and     esi, ebp
7330
                or      esi, edi
7331
                mov     edi, edx
7332
                add     ecx, esi
7333
                mov     esi, [esp+4]
7334
                rol     edi, 5
7335
                add     ecx, edi
7336
                mov     edi, [esi+0E4h]
7337
                ror     ebp, 2
7338
                lea     ecx, [ecx+edi-70E44324h]
7339
                mov     esi, ebp
7340
                mov     edi, ebp
7341
                or      esi, eax
7342
                and     edi, eax
7343
                and     esi, edx
7344
                or      esi, edi
7345
                mov     edi, ecx
7346
                add     ebx, esi
7347
                mov     esi, [esp+4]
7348
                rol     edi, 5
7349
                add     ebx, edi
7350
                mov     edi, [esi+0E8h]
7351
                ror     edx, 2
7352
                lea     ebx, [ebx+edi-70E44324h]
7353
                mov     esi, edx
7354
                mov     edi, edx
7355
                or      esi, ebp
7356
                and     edi, ebp
7357
                and     esi, ecx
7358
                or      esi, edi
7359
                mov     edi, ebx
7360
                add     eax, esi
7361
                mov     esi, [esp+4]
7362
                rol     edi, 5
7363
                add     eax, edi
7364
                mov     edi, [esi+0ECh]
7365
                ror     ecx, 2
7366
                lea     eax, [eax+edi-70E44324h]
7367
                mov     edi, ecx
7368
                xor     edi, edx
7369
                xor     edi, ebx
7370
                add     ebp, edi
7371
                mov     edi, [esi+0F0h]
7372
                ror     ebx, 2
7373
                lea     ebp, [ebp+edi-359D3E2Ah]
7374
                mov     edi, eax
7375
                rol     edi, 5
7376
                add     ebp, edi
7377
                mov     edi, ecx
7378
                xor     edi, ebx
7379
                xor     edi, eax
7380
                add     edx, edi
7381
                mov     edi, [esi+0F4h]
7382
                ror     eax, 2
7383
                lea     edx, [edx+edi-359D3E2Ah]
7384
                mov     edi, ebp
7385
                rol     edi, 5
7386
                add     edx, edi
7387
                mov     edi, ebx
7388
                xor     edi, eax
7389
                xor     edi, ebp
7390
                add     ecx, edi
7391
                mov     edi, [esi+0F8h]
7392
                ror     ebp, 2
7393
                lea     ecx, [ecx+edi-359D3E2Ah]
7394
                mov     edi, edx
7395
                rol     edi, 5
7396
                add     ecx, edi
7397
                mov     edi, eax
7398
                xor     edi, ebp
7399
                xor     edi, edx
7400
                add     ebx, edi
7401
                mov     edi, [esi+0FCh]
7402
                ror     edx, 2
7403
                lea     ebx, [ebx+edi-359D3E2Ah]
7404
                mov     edi, ecx
7405
                rol     edi, 5
7406
                add     ebx, edi
7407
                mov     edi, ebp
7408
                xor     edi, edx
7409
                xor     edi, ecx
7410
                add     eax, edi
7411
                mov     edi, [esi+100h]
7412
                ror     ecx, 2
7413
                lea     eax, [eax+edi-359D3E2Ah]
7414
                mov     edi, ebx
7415
                rol     edi, 5
7416
                add     eax, edi
7417
                mov     edi, edx
7418
                xor     edi, ecx
7419
                xor     edi, ebx
7420
                add     ebp, edi
7421
                mov     edi, [esi+104h]
7422
                ror     ebx, 2
7423
                lea     ebp, [ebp+edi-359D3E2Ah]
7424
                mov     edi, eax
7425
                rol     edi, 5
7426
                add     ebp, edi
7427
                mov     edi, ecx
7428
                xor     edi, ebx
7429
                xor     edi, eax
7430
                add     edx, edi
7431
                mov     edi, [esi+108h]
7432
                ror     eax, 2
7433
                lea     edx, [edx+edi-359D3E2Ah]
7434
                mov     edi, ebp
7435
                rol     edi, 5
7436
                add     edx, edi
7437
                mov     edi, ebx
7438
                xor     edi, eax
7439
                xor     edi, ebp
7440
                add     ecx, edi
7441
                mov     edi, [esi+10Ch]
7442
                ror     ebp, 2
7443
                lea     ecx, [ecx+edi-359D3E2Ah]
7444
                mov     edi, edx
7445
                rol     edi, 5
7446
                add     ecx, edi
7447
                mov     edi, eax
7448
                xor     edi, ebp
7449
                xor     edi, edx
7450
                add     ebx, edi
7451
                mov     edi, [esi+110h]
7452
                ror     edx, 2
7453
                lea     ebx, [ebx+edi-359D3E2Ah]
7454
                mov     edi, ecx
7455
                rol     edi, 5
7456
                add     ebx, edi
7457
                mov     edi, ebp
7458
                xor     edi, edx
7459
                xor     edi, ecx
7460
                add     eax, edi
7461
                mov     edi, [esi+114h]
7462
                ror     ecx, 2
7463
                lea     eax, [eax+edi-359D3E2Ah]
7464
                mov     edi, ebx
7465
                rol     edi, 5
7466
                add     eax, edi
7467
                mov     edi, edx
7468
                xor     edi, ecx
7469
                xor     edi, ebx
7470
                add     ebp, edi
7471
                mov     edi, [esi+118h]
7472
                ror     ebx, 2
7473
                lea     ebp, [ebp+edi-359D3E2Ah]
7474
                mov     edi, eax
7475
                rol     edi, 5
7476
                add     ebp, edi
7477
                mov     edi, ecx
7478
                xor     edi, ebx
7479
                xor     edi, eax
7480
                add     edx, edi
7481
                mov     edi, [esi+11Ch]
7482
                ror     eax, 2
7483
                lea     edx, [edx+edi-359D3E2Ah]
7484
                mov     edi, ebp
7485
                rol     edi, 5
7486
                add     edx, edi
7487
                mov     edi, ebx
7488
                xor     edi, eax
7489
                xor     edi, ebp
7490
                add     ecx, edi
7491
                mov     edi, [esi+120h]
7492
                ror     ebp, 2
7493
                lea     ecx, [ecx+edi-359D3E2Ah]
7494
                mov     edi, edx
7495
                rol     edi, 5
7496
                add     ecx, edi
7497
                mov     edi, eax
7498
                xor     edi, ebp
7499
                xor     edi, edx
7500
                add     ebx, edi
7501
                mov     edi, [esi+124h]
7502
                ror     edx, 2
7503
                lea     ebx, [ebx+edi-359D3E2Ah]
7504
                mov     edi, ecx
7505
                rol     edi, 5
7506
                add     ebx, edi
7507
                mov     edi, ebp
7508
                xor     edi, edx
7509
                xor     edi, ecx
7510
                add     eax, edi
7511
                mov     edi, [esi+128h]
7512
                ror     ecx, 2
7513
                lea     eax, [eax+edi-359D3E2Ah]
7514
                mov     edi, ebx
7515
                rol     edi, 5
7516
                add     eax, edi
7517
                mov     edi, edx
7518
                xor     edi, ecx
7519
                xor     edi, ebx
7520
                add     ebp, edi
7521
                mov     edi, [esi+12Ch]
7522
                ror     ebx, 2
7523
                lea     ebp, [ebp+edi-359D3E2Ah]
7524
                mov     edi, eax
7525
                rol     edi, 5
7526
                add     ebp, edi
7527
                mov     edi, ecx
7528
                xor     edi, ebx
7529
                xor     edi, eax
7530
                add     edx, edi
7531
                mov     edi, [esi+130h]
7532
                ror     eax, 2
7533
                lea     edx, [edx+edi-359D3E2Ah]
7534
                mov     edi, ebp
7535
                rol     edi, 5
7536
                add     edx, edi
7537
                mov     edi, ebx
7538
                xor     edi, eax
7539
                xor     edi, ebp
7540
                add     ecx, edi
7541
                mov     edi, [esi+134h]
7542
                ror     ebp, 2
7543
                lea     ecx, [ecx+edi-359D3E2Ah]
7544
                mov     edi, edx
7545
                rol     edi, 5
7546
                add     ecx, edi
7547
                mov     edi, eax
7548
                xor     edi, ebp
7549
                xor     edi, edx
7550
                add     ebx, edi
7551
                mov     edi, [esi+138h]
7552
                ror     edx, 2
7553
                lea     ebx, [ebx+edi-359D3E2Ah]
7554
                mov     edi, ecx
7555
                rol     edi, 5
7556
                add     ebx, edi
7557
                mov     edi, ebp
7558
                xor     edi, edx
7559
                xor     edi, ecx
7560
                add     eax, edi
7561
                mov     edi, [esi+13Ch]
7562
                ror     ecx, 2
7563
                lea     eax, [eax+edi-359D3E2Ah]
7564
                mov     edi, ebx
7565
                rol     edi, 5
7566
                add     eax, edi
7567
                mov     edi, [esp]
7568
                add     esp, 8
7569
                add     [edi], eax
7570
                mov     eax, [edi+4]
7571
                mov     esi, [edi+8]
7572
                add     ebx, eax
7573
                mov     eax, [edi+0Ch]
7574
                add     ecx, esi
7575
                mov     esi, [edi+10h]
7576
                mov     [edi+4], ebx
7577
                add     edx, eax
7578
                add     ebp, esi
7579
                mov     [edi+8], ecx
7580
                mov     [edi+0Ch], edx
7581
                mov     [edi+10h], ebp
7582
7583
                pop     ebp
7584
                pop     edi
7585
                pop     esi
7586
                pop     ebx
7587
  end;
7588
end;
7589
7590
{$IFDEF OLD_SHA_NAME}
7591
procedure THash_SHA.DoTransform(Buffer: PUInt32Array);
7592
var
7593
  W: array[0..79] of LongWord;
7594
begin
7595
  SHABuffer(PUInt32Array(@W), Buffer, ClassType <> THash_SHA);
7596
7597
  asm
7598
                push    ebx
7599
                mov     eax, Self
7600
                push    esi
7601
                push    edi
7602
                lea     edi, [eax].THash_SHA.FDigest
7603
                lea     esi, W
7604
                push    ebp
7605
7606
                sub     esp, 8
7607
                mov     eax, [edi]
7608
                mov     ebx, [edi+4]
7609
                mov     ecx, [edi+8]
7610
                mov     [esp], edi
7611
                mov     edx, [edi+0Ch]
7612
                mov     ebp, [edi+10h]
7613
                mov     [esp+4], esi
7614
                mov     edi, ecx
7615
                xor     edi, edx
7616
                and     edi, ebx
7617
                add     ebp, [esi]
7618
                xor     edi, edx
7619
                ror     ebx, 2
7620
                lea     ebp, [ebp+edi+5A827999h]
7621
                mov     edi, eax
7622
                rol     edi, 5
7623
                add     ebp, edi
7624
                mov     edi, ecx
7625
                xor     edi, ebx
7626
                and     edi, eax
7627
                add     edx, [esi+4]
7628
                xor     edi, ecx
7629
                ror     eax, 2
7630
                lea     edx, [edx+edi+5A827999h]
7631
                mov     edi, ebp
7632
                rol     edi, 5
7633
                add     edx, edi
7634
                mov     edi, ebx
7635
                xor     edi, eax
7636
                and     edi, ebp
7637
                add     ecx, [esi+8]
7638
                xor     edi, ebx
7639
                ror     ebp, 2
7640
                lea     ecx, [ecx+edi+5A827999h]
7641
                mov     edi, edx
7642
                rol     edi, 5
7643
                add     ecx, edi
7644
                mov     edi, eax
7645
                xor     edi, ebp
7646
                and     edi, edx
7647
                add     ebx, [esi+0Ch]
7648
                xor     edi, eax
7649
                ror     edx, 2
7650
                lea     ebx, [ebx+edi+5A827999h]
7651
                mov     edi, ecx
7652
                rol     edi, 5
7653
                add     ebx, edi
7654
                mov     edi, ebp
7655
                xor     edi, edx
7656
                and     edi, ecx
7657
                add     eax, [esi+10h]
7658
                xor     edi, ebp
7659
                ror     ecx, 2
7660
                lea     eax, [eax+edi+5A827999h]
7661
                mov     edi, ebx
7662
                rol     edi, 5
7663
                add     eax, edi
7664
                mov     edi, edx
7665
                xor     edi, ecx
7666
                and     edi, ebx
7667
                add     ebp, [esi+14h]
7668
                xor     edi, edx
7669
                ror     ebx, 2
7670
                lea     ebp, [ebp+edi+5A827999h]
7671
                mov     edi, eax
7672
                rol     edi, 5
7673
                add     ebp, edi
7674
                mov     edi, ecx
7675
                xor     edi, ebx
7676
                and     edi, eax
7677
                add     edx, [esi+18h]
7678
                xor     edi, ecx
7679
                ror     eax, 2
7680
                lea     edx, [edx+edi+5A827999h]
7681
                mov     edi, ebp
7682
                rol     edi, 5
7683
                add     edx, edi
7684
                mov     edi, ebx
7685
                xor     edi, eax
7686
                and     edi, ebp
7687
                add     ecx, [esi+1Ch]
7688
                xor     edi, ebx
7689
                ror     ebp, 2
7690
                lea     ecx, [ecx+edi+5A827999h]
7691
                mov     edi, edx
7692
                rol     edi, 5
7693
                add     ecx, edi
7694
                mov     edi, eax
7695
                xor     edi, ebp
7696
                and     edi, edx
7697
                add     ebx, [esi+20h]
7698
                xor     edi, eax
7699
                ror     edx, 2
7700
                lea     ebx, [ebx+edi+5A827999h]
7701
                mov     edi, ecx
7702
                rol     edi, 5
7703
                add     ebx, edi
7704
                mov     edi, ebp
7705
                xor     edi, edx
7706
                and     edi, ecx
7707
                add     eax, [esi+24h]
7708
                xor     edi, ebp
7709
                ror     ecx, 2
7710
                lea     eax, [eax+edi+5A827999h]
7711
                mov     edi, ebx
7712
                rol     edi, 5
7713
                add     eax, edi
7714
                mov     edi, edx
7715
                xor     edi, ecx
7716
                and     edi, ebx
7717
                add     ebp, [esi+28h]
7718
                xor     edi, edx
7719
                ror     ebx, 2
7720
                lea     ebp, [ebp+edi+5A827999h]
7721
                mov     edi, eax
7722
                rol     edi, 5
7723
                add     ebp, edi
7724
                mov     edi, ecx
7725
                xor     edi, ebx
7726
                and     edi, eax
7727
                add     edx, [esi+2Ch]
7728
                xor     edi, ecx
7729
                ror     eax, 2
7730
                lea     edx, [edx+edi+5A827999h]
7731
                mov     edi, ebp
7732
                rol     edi, 5
7733
                add     edx, edi
7734
                mov     edi, ebx
7735
                xor     edi, eax
7736
                and     edi, ebp
7737
                add     ecx, [esi+30h]
7738
                xor     edi, ebx
7739
                ror     ebp, 2
7740
                lea     ecx, [ecx+edi+5A827999h]
7741
                mov     edi, edx
7742
                rol     edi, 5
7743
                add     ecx, edi
7744
                mov     edi, eax
7745
                xor     edi, ebp
7746
                and     edi, edx
7747
                add     ebx, [esi+34h]
7748
                xor     edi, eax
7749
                ror     edx, 2
7750
                lea     ebx, [ebx+edi+5A827999h]
7751
                mov     edi, ecx
7752
                rol     edi, 5
7753
                add     ebx, edi
7754
                mov     edi, ebp
7755
                xor     edi, edx
7756
                and     edi, ecx
7757
                add     eax, [esi+38h]
7758
                xor     edi, ebp
7759
                ror     ecx, 2
7760
                lea     eax, [eax+edi+5A827999h]
7761
                mov     edi, ebx
7762
                rol     edi, 5
7763
                add     eax, edi
7764
                mov     edi, edx
7765
                xor     edi, ecx
7766
                and     edi, ebx
7767
                add     ebp, [esi+3Ch]
7768
                xor     edi, edx
7769
                ror     ebx, 2
7770
                lea     ebp, [ebp+edi+5A827999h]
7771
                mov     edi, eax
7772
                rol     edi, 5
7773
                add     ebp, edi
7774
                mov     edi, ecx
7775
                xor     edi, ebx
7776
                and     edi, eax
7777
                add     edx, [esi+40h]
7778
                xor     edi, ecx
7779
                ror     eax, 2
7780
                lea     edx, [edx+edi+5A827999h]
7781
                mov     edi, ebp
7782
                rol     edi, 5
7783
                add     edx, edi
7784
                mov     edi, ebx
7785
                xor     edi, eax
7786
                and     edi, ebp
7787
                add     ecx, [esi+44h]
7788
                xor     edi, ebx
7789
                ror     ebp, 2
7790
                lea     ecx, [ecx+edi+5A827999h]
7791
                mov     edi, edx
7792
                rol     edi, 5
7793
                add     ecx, edi
7794
                mov     edi, eax
7795
                xor     edi, ebp
7796
                and     edi, edx
7797
                add     ebx, [esi+48h]
7798
                xor     edi, eax
7799
                ror     edx, 2
7800
                lea     ebx, [ebx+edi+5A827999h]
7801
                mov     edi, ecx
7802
                rol     edi, 5
7803
                add     ebx, edi
7804
                mov     edi, ebp
7805
                xor     edi, edx
7806
                and     edi, ecx
7807
                add     eax, [esi+4Ch]
7808
                xor     edi, ebp
7809
                ror     ecx, 2
7810
                lea     eax, [eax+edi+5A827999h]
7811
                mov     edi, ebx
7812
                rol     edi, 5
7813
                add     eax, edi
7814
                mov     edi, edx
7815
                xor     edi, ecx
7816
                xor     edi, ebx
7817
                add     ebp, edi
7818
                mov     edi, [esi+50h]
7819
                ror     ebx, 2
7820
                lea     ebp, [ebp+edi+6ED9EBA1h]
7821
                mov     edi, eax
7822
                rol     edi, 5
7823
                add     ebp, edi
7824
                mov     edi, ecx
7825
                xor     edi, ebx
7826
                xor     edi, eax
7827
                add     edx, edi
7828
                mov     edi, [esi+54h]
7829
                ror     eax, 2
7830
                lea     edx, [edx+edi+6ED9EBA1h]
7831
                mov     edi, ebp
7832
                rol     edi, 5
7833
                add     edx, edi
7834
                mov     edi, ebx
7835
                xor     edi, eax
7836
                xor     edi, ebp
7837
                add     ecx, edi
7838
                mov     edi, [esi+58h]
7839
                ror     ebp, 2
7840
                lea     ecx, [ecx+edi+6ED9EBA1h]
7841
                mov     edi, edx
7842
                rol     edi, 5
7843
                add     ecx, edi
7844
                mov     edi, eax
7845
                xor     edi, ebp
7846
                xor     edi, edx
7847
                add     ebx, edi
7848
                mov     edi, [esi+5Ch]
7849
                ror     edx, 2
7850
                lea     ebx, [ebx+edi+6ED9EBA1h]
7851
                mov     edi, ecx
7852
                rol     edi, 5
7853
                add     ebx, edi
7854
                mov     edi, ebp
7855
                xor     edi, edx
7856
                xor     edi, ecx
7857
                add     eax, edi
7858
                mov     edi, [esi+60h]
7859
                ror     ecx, 2
7860
                lea     eax, [eax+edi+6ED9EBA1h]
7861
                mov     edi, ebx
7862
                rol     edi, 5
7863
                add     eax, edi
7864
                mov     edi, edx
7865
                xor     edi, ecx
7866
                xor     edi, ebx
7867
                add     ebp, edi
7868
                mov     edi, [esi+64h]
7869
                ror     ebx, 2
7870
                lea     ebp, [ebp+edi+6ED9EBA1h]
7871
                mov     edi, eax
7872
                rol     edi, 5
7873
                add     ebp, edi
7874
                mov     edi, ecx
7875
                xor     edi, ebx
7876
                xor     edi, eax
7877
                add     edx, edi
7878
                mov     edi, [esi+68h]
7879
                ror     eax, 2
7880
                lea     edx, [edx+edi+6ED9EBA1h]
7881
                mov     edi, ebp
7882
                rol     edi, 5
7883
                add     edx, edi
7884
                mov     edi, ebx
7885
                xor     edi, eax
7886
                xor     edi, ebp
7887
                add     ecx, edi
7888
                mov     edi, [esi+6Ch]
7889
                ror     ebp, 2
7890
                lea     ecx, [ecx+edi+6ED9EBA1h]
7891
                mov     edi, edx
7892
                rol     edi, 5
7893
                add     ecx, edi
7894
                mov     edi, eax
7895
                xor     edi, ebp
7896
                xor     edi, edx
7897
                add     ebx, edi
7898
                mov     edi, [esi+70h]
7899
                ror     edx, 2
7900
                lea     ebx, [ebx+edi+6ED9EBA1h]
7901
                mov     edi, ecx
7902
                rol     edi, 5
7903
                add     ebx, edi
7904
                mov     edi, ebp
7905
                xor     edi, edx
7906
                xor     edi, ecx
7907
                add     eax, edi
7908
                mov     edi, [esi+74h]
7909
                ror     ecx, 2
7910
                lea     eax, [eax+edi+6ED9EBA1h]
7911
                mov     edi, ebx
7912
                rol     edi, 5
7913
                add     eax, edi
7914
                mov     edi, edx
7915
                xor     edi, ecx
7916
                xor     edi, ebx
7917
                add     ebp, edi
7918
                mov     edi, [esi+78h]
7919
                ror     ebx, 2
7920
                lea     ebp, [ebp+edi+6ED9EBA1h]
7921
                mov     edi, eax
7922
                rol     edi, 5
7923
                add     ebp, edi
7924
                mov     edi, ecx
7925
                xor     edi, ebx
7926
                xor     edi, eax
7927
                add     edx, edi
7928
                mov     edi, [esi+7Ch]
7929
                ror     eax, 2
7930
                lea     edx, [edx+edi+6ED9EBA1h]
7931
                mov     edi, ebp
7932
                rol     edi, 5
7933
                add     edx, edi
7934
                mov     edi, ebx
7935
                xor     edi, eax
7936
                xor     edi, ebp
7937
                add     ecx, edi
7938
                mov     edi, [esi+80h]
7939
                ror     ebp, 2
7940
                lea     ecx, [ecx+edi+6ED9EBA1h]
7941
                mov     edi, edx
7942
                rol     edi, 5
7943
                add     ecx, edi
7944
                mov     edi, eax
7945
                xor     edi, ebp
7946
                xor     edi, edx
7947
                add     ebx, edi
7948
                mov     edi, [esi+84h]
7949
                ror     edx, 2
7950
                lea     ebx, [ebx+edi+6ED9EBA1h]
7951
                mov     edi, ecx
7952
                rol     edi, 5
7953
                add     ebx, edi
7954
                mov     edi, ebp
7955
                xor     edi, edx
7956
                xor     edi, ecx
7957
                add     eax, edi
7958
                mov     edi, [esi+88h]
7959
                ror     ecx, 2
7960
                lea     eax, [eax+edi+6ED9EBA1h]
7961
                mov     edi, ebx
7962
                rol     edi, 5
7963
                add     eax, edi
7964
                mov     edi, edx
7965
                xor     edi, ecx
7966
                xor     edi, ebx
7967
                add     ebp, edi
7968
                mov     edi, [esi+8Ch]
7969
                ror     ebx, 2
7970
                lea     ebp, [ebp+edi+6ED9EBA1h]
7971
                mov     edi, eax
7972
                rol     edi, 5
7973
                add     ebp, edi
7974
                mov     edi, ecx
7975
                xor     edi, ebx
7976
                xor     edi, eax
7977
                add     edx, edi
7978
                mov     edi, [esi+90h]
7979
                ror     eax, 2
7980
                lea     edx, [edx+edi+6ED9EBA1h]
7981
                mov     edi, ebp
7982
                rol     edi, 5
7983
                add     edx, edi
7984
                mov     edi, ebx
7985
                xor     edi, eax
7986
                xor     edi, ebp
7987
                add     ecx, edi
7988
                mov     edi, [esi+94h]
7989
                ror     ebp, 2
7990
                lea     ecx, [ecx+edi+6ED9EBA1h]
7991
                mov     edi, edx
7992
                rol     edi, 5
7993
                add     ecx, edi
7994
                mov     edi, eax
7995
                xor     edi, ebp
7996
                xor     edi, edx
7997
                add     ebx, edi
7998
                mov     edi, [esi+98h]
7999
                ror     edx, 2
8000
                lea     ebx, [ebx+edi+6ED9EBA1h]
8001
                mov     edi, ecx
8002
                rol     edi, 5
8003
                add     ebx, edi
8004
                mov     edi, ebp
8005
                xor     edi, edx
8006
                xor     edi, ecx
8007
                add     eax, edi
8008
                mov     edi, [esi+9Ch]
8009
                ror     ecx, 2
8010
                lea     eax, [eax+edi+6ED9EBA1h]
8011
                mov     edi, ebx
8012
                rol     edi, 5
8013
                add     eax, edi
8014
                mov     edi, edx
8015
                xor     edi, ecx
8016
                mov     esi, ecx
8017
                mov     edi, ecx
8018
                or      esi, edx
8019
                and     edi, edx
8020
                and     esi, ebx
8021
                or      esi, edi
8022
                mov     edi, eax
8023
                add     ebp, esi
8024
                mov     esi, [esp+4]
8025
                rol     edi, 5
8026
                add     ebp, edi
8027
                mov     edi, [esi+0A0h]
8028
                ror     ebx, 2
8029
                lea     ebp, [ebp+edi-70E44324h]
8030
                mov     esi, ebx
8031
                mov     edi, ebx
8032
                or      esi, ecx
8033
                and     edi, ecx
8034
                and     esi, eax
8035
                or      esi, edi
8036
                mov     edi, ebp
8037
                add     edx, esi
8038
                mov     esi, [esp+4]
8039
                rol     edi, 5
8040
                add     edx, edi
8041
                mov     edi, [esi+0A4h]
8042
                ror     eax, 2
8043
                lea     edx, [edx+edi-70E44324h]
8044
                mov     esi, eax
8045
                mov     edi, eax
8046
                or      esi, ebx
8047
                and     edi, ebx
8048
                and     esi, ebp
8049
                or      esi, edi
8050
                mov     edi, edx
8051
                add     ecx, esi
8052
                mov     esi, [esp+4]
8053
                rol     edi, 5
8054
                add     ecx, edi
8055
                mov     edi, [esi+0A8h]
8056
                ror     ebp, 2
8057
                lea     ecx, [ecx+edi-70E44324h]
8058
                mov     esi, ebp
8059
                mov     edi, ebp
8060
                or      esi, eax
8061
                and     edi, eax
8062
                and     esi, edx
8063
                or      esi, edi
8064
                mov     edi, ecx
8065
                add     ebx, esi
8066
                mov     esi, [esp+4]
8067
                rol     edi, 5
8068
                add     ebx, edi
8069
                mov     edi, [esi+0ACh]
8070
                ror     edx, 2
8071
                lea     ebx, [ebx+edi-70E44324h]
8072
                mov     esi, edx
8073
                mov     edi, edx
8074
                or      esi, ebp
8075
                and     edi, ebp
8076
                and     esi, ecx
8077
                or      esi, edi
8078
                mov     edi, ebx
8079
                add     eax, esi
8080
                mov     esi, [esp+4]
8081
                rol     edi, 5
8082
                add     eax, edi
8083
                mov     edi, [esi+0B0h]
8084
                ror     ecx, 2
8085
                lea     eax, [eax+edi-70E44324h]
8086
                mov     esi, ecx
8087
                mov     edi, ecx
8088
                or      esi, edx
8089
                and     edi, edx
8090
                and     esi, ebx
8091
                or      esi, edi
8092
                mov     edi, eax
8093
                add     ebp, esi
8094
                mov     esi, [esp+4]
8095
                rol     edi, 5
8096
                add     ebp, edi
8097
                mov     edi, [esi+0B4h]
8098
                ror     ebx, 2
8099
                lea     ebp, [ebp+edi-70E44324h]
8100
                mov     esi, ebx
8101
                mov     edi, ebx
8102
                or      esi, ecx
8103
                and     edi, ecx
8104
                and     esi, eax
8105
                or      esi, edi
8106
                mov     edi, ebp
8107
                add     edx, esi
8108
                mov     esi, [esp+4]
8109
                rol     edi, 5
8110
                add     edx, edi
8111
                mov     edi, [esi+0B8h]
8112
                ror     eax, 2
8113
                lea     edx, [edx+edi-70E44324h]
8114
                mov     esi, eax
8115
                mov     edi, eax
8116
                or      esi, ebx
8117
                and     edi, ebx
8118
                and     esi, ebp
8119
                or      esi, edi
8120
                mov     edi, edx
8121
                add     ecx, esi
8122
                mov     esi, [esp+4]
8123
                rol     edi, 5
8124
                add     ecx, edi
8125
                mov     edi, [esi+0BCh]
8126
                ror     ebp, 2
8127
                lea     ecx, [ecx+edi-70E44324h]
8128
                mov     esi, ebp
8129
                mov     edi, ebp
8130
                or      esi, eax
8131
                and     edi, eax
8132
                and     esi, edx
8133
                or      esi, edi
8134
                mov     edi, ecx
8135
                add     ebx, esi
8136
                mov     esi, [esp+4]
8137
                rol     edi, 5
8138
                add     ebx, edi
8139
                mov     edi, [esi+0C0h]
8140
                ror     edx, 2
8141
                lea     ebx, [ebx+edi-70E44324h]
8142
                mov     esi, edx
8143
                mov     edi, edx
8144
                or      esi, ebp
8145
                and     edi, ebp
8146
                and     esi, ecx
8147
                or      esi, edi
8148
                mov     edi, ebx
8149
                add     eax, esi
8150
                mov     esi, [esp+4]
8151
                rol     edi, 5
8152
                add     eax, edi
8153
                mov     edi, [esi+0C4h]
8154
                ror     ecx, 2
8155
                lea     eax, [eax+edi-70E44324h]
8156
                mov     esi, ecx
8157
                mov     edi, ecx
8158
                or      esi, edx
8159
                and     edi, edx
8160
                and     esi, ebx
8161
                or      esi, edi
8162
                mov     edi, eax
8163
                add     ebp, esi
8164
                mov     esi, [esp+4]
8165
                rol     edi, 5
8166
                add     ebp, edi
8167
                mov     edi, [esi+0C8h]
8168
                ror     ebx, 2
8169
                lea     ebp, [ebp+edi-70E44324h]
8170
                mov     esi, ebx
8171
                mov     edi, ebx
8172
                or      esi, ecx
8173
                and     edi, ecx
8174
                and     esi, eax
8175
                or      esi, edi
8176
                mov     edi, ebp
8177
                add     edx, esi
8178
                mov     esi, [esp+4]
8179
                rol     edi, 5
8180
                add     edx, edi
8181
                mov     edi, [esi+0CCh]
8182
                ror     eax, 2
8183
                lea     edx, [edx+edi-70E44324h]
8184
                mov     esi, eax
8185
                mov     edi, eax
8186
                or      esi, ebx
8187
                and     edi, ebx
8188
                and     esi, ebp
8189
                or      esi, edi
8190
                mov     edi, edx
8191
                add     ecx, esi
8192
                mov     esi, [esp+4]
8193
                rol     edi, 5
8194
                add     ecx, edi
8195
                mov     edi, [esi+0D0h]
8196
                ror     ebp, 2
8197
                lea     ecx, [ecx+edi-70E44324h]
8198
                mov     esi, ebp
8199
                mov     edi, ebp
8200
                or      esi, eax
8201
                and     edi, eax
8202
                and     esi, edx
8203
                or      esi, edi
8204
                mov     edi, ecx
8205
                add     ebx, esi
8206
                mov     esi, [esp+4]
8207
                rol     edi, 5
8208
                add     ebx, edi
8209
                mov     edi, [esi+0D4h]
8210
                ror     edx, 2
8211
                lea     ebx, [ebx+edi-70E44324h]
8212
                mov     esi, edx
8213
                mov     edi, edx
8214
                or      esi, ebp
8215
                and     edi, ebp
8216
                and     esi, ecx
8217
                or      esi, edi
8218
                mov     edi, ebx
8219
                add     eax, esi
8220
                mov     esi, [esp+4]
8221
                rol     edi, 5
8222
                add     eax, edi
8223
                mov     edi, [esi+0D8h]
8224
                ror     ecx, 2
8225
                lea     eax, [eax+edi-70E44324h]
8226
                mov     esi, ecx
8227
                mov     edi, ecx
8228
                or      esi, edx
8229
                and     edi, edx
8230
                and     esi, ebx
8231
                or      esi, edi
8232
                mov     edi, eax
8233
                add     ebp, esi
8234
                mov     esi, [esp+4]
8235
                rol     edi, 5
8236
                add     ebp, edi
8237
                mov     edi, [esi+0DCh]
8238
                ror     ebx, 2
8239
                lea     ebp, [ebp+edi-70E44324h]
8240
                mov     esi, ebx
8241
                mov     edi, ebx
8242
                or      esi, ecx
8243
                and     edi, ecx
8244
                and     esi, eax
8245
                or      esi, edi
8246
                mov     edi, ebp
8247
                add     edx, esi
8248
                mov     esi, [esp+4]
8249
                rol     edi, 5
8250
                add     edx, edi
8251
                mov     edi, [esi+0E0h]
8252
                ror     eax, 2
8253
                lea     edx, [edx+edi-70E44324h]
8254
                mov     esi, eax
8255
                mov     edi, eax
8256
                or      esi, ebx
8257
                and     edi, ebx
8258
                and     esi, ebp
8259
                or      esi, edi
8260
                mov     edi, edx
8261
                add     ecx, esi
8262
                mov     esi, [esp+4]
8263
                rol     edi, 5
8264
                add     ecx, edi
8265
                mov     edi, [esi+0E4h]
8266
                ror     ebp, 2
8267
                lea     ecx, [ecx+edi-70E44324h]
8268
                mov     esi, ebp
8269
                mov     edi, ebp
8270
                or      esi, eax
8271
                and     edi, eax
8272
                and     esi, edx
8273
                or      esi, edi
8274
                mov     edi, ecx
8275
                add     ebx, esi
8276
                mov     esi, [esp+4]
8277
                rol     edi, 5
8278
                add     ebx, edi
8279
                mov     edi, [esi+0E8h]
8280
                ror     edx, 2
8281
                lea     ebx, [ebx+edi-70E44324h]
8282
                mov     esi, edx
8283
                mov     edi, edx
8284
                or      esi, ebp
8285
                and     edi, ebp
8286
                and     esi, ecx
8287
                or      esi, edi
8288
                mov     edi, ebx
8289
                add     eax, esi
8290
                mov     esi, [esp+4]
8291
                rol     edi, 5
8292
                add     eax, edi
8293
                mov     edi, [esi+0ECh]
8294
                ror     ecx, 2
8295
                lea     eax, [eax+edi-70E44324h]
8296
                mov     edi, ecx
8297
                xor     edi, edx
8298
                xor     edi, ebx
8299
                add     ebp, edi
8300
                mov     edi, [esi+0F0h]
8301
                ror     ebx, 2
8302
                lea     ebp, [ebp+edi-359D3E2Ah]
8303
                mov     edi, eax
8304
                rol     edi, 5
8305
                add     ebp, edi
8306
                mov     edi, ecx
8307
                xor     edi, ebx
8308
                xor     edi, eax
8309
                add     edx, edi
8310
                mov     edi, [esi+0F4h]
8311
                ror     eax, 2
8312
                lea     edx, [edx+edi-359D3E2Ah]
8313
                mov     edi, ebp
8314
                rol     edi, 5
8315
                add     edx, edi
8316
                mov     edi, ebx
8317
                xor     edi, eax
8318
                xor     edi, ebp
8319
                add     ecx, edi
8320
                mov     edi, [esi+0F8h]
8321
                ror     ebp, 2
8322
                lea     ecx, [ecx+edi-359D3E2Ah]
8323
                mov     edi, edx
8324
                rol     edi, 5
8325
                add     ecx, edi
8326
                mov     edi, eax
8327
                xor     edi, ebp
8328
                xor     edi, edx
8329
                add     ebx, edi
8330
                mov     edi, [esi+0FCh]
8331
                ror     edx, 2
8332
                lea     ebx, [ebx+edi-359D3E2Ah]
8333
                mov     edi, ecx
8334
                rol     edi, 5
8335
                add     ebx, edi
8336
                mov     edi, ebp
8337
                xor     edi, edx
8338
                xor     edi, ecx
8339
                add     eax, edi
8340
                mov     edi, [esi+100h]
8341
                ror     ecx, 2
8342
                lea     eax, [eax+edi-359D3E2Ah]
8343
                mov     edi, ebx
8344
                rol     edi, 5
8345
                add     eax, edi
8346
                mov     edi, edx
8347
                xor     edi, ecx
8348
                xor     edi, ebx
8349
                add     ebp, edi
8350
                mov     edi, [esi+104h]
8351
                ror     ebx, 2
8352
                lea     ebp, [ebp+edi-359D3E2Ah]
8353
                mov     edi, eax
8354
                rol     edi, 5
8355
                add     ebp, edi
8356
                mov     edi, ecx
8357
                xor     edi, ebx
8358
                xor     edi, eax
8359
                add     edx, edi
8360
                mov     edi, [esi+108h]
8361
                ror     eax, 2
8362
                lea     edx, [edx+edi-359D3E2Ah]
8363
                mov     edi, ebp
8364
                rol     edi, 5
8365
                add     edx, edi
8366
                mov     edi, ebx
8367
                xor     edi, eax
8368
                xor     edi, ebp
8369
                add     ecx, edi
8370
                mov     edi, [esi+10Ch]
8371
                ror     ebp, 2
8372
                lea     ecx, [ecx+edi-359D3E2Ah]
8373
                mov     edi, edx
8374
                rol     edi, 5
8375
                add     ecx, edi
8376
                mov     edi, eax
8377
                xor     edi, ebp
8378
                xor     edi, edx
8379
                add     ebx, edi
8380
                mov     edi, [esi+110h]
8381
                ror     edx, 2
8382
                lea     ebx, [ebx+edi-359D3E2Ah]
8383
                mov     edi, ecx
8384
                rol     edi, 5
8385
                add     ebx, edi
8386
                mov     edi, ebp
8387
                xor     edi, edx
8388
                xor     edi, ecx
8389
                add     eax, edi
8390
                mov     edi, [esi+114h]
8391
                ror     ecx, 2
8392
                lea     eax, [eax+edi-359D3E2Ah]
8393
                mov     edi, ebx
8394
                rol     edi, 5
8395
                add     eax, edi
8396
                mov     edi, edx
8397
                xor     edi, ecx
8398
                xor     edi, ebx
8399
                add     ebp, edi
8400
                mov     edi, [esi+118h]
8401
                ror     ebx, 2
8402
                lea     ebp, [ebp+edi-359D3E2Ah]
8403
                mov     edi, eax
8404
                rol     edi, 5
8405
                add     ebp, edi
8406
                mov     edi, ecx
8407
                xor     edi, ebx
8408
                xor     edi, eax
8409
                add     edx, edi
8410
                mov     edi, [esi+11Ch]
8411
                ror     eax, 2
8412
                lea     edx, [edx+edi-359D3E2Ah]
8413
                mov     edi, ebp
8414
                rol     edi, 5
8415
                add     edx, edi
8416
                mov     edi, ebx
8417
                xor     edi, eax
8418
                xor     edi, ebp
8419
                add     ecx, edi
8420
                mov     edi, [esi+120h]
8421
                ror     ebp, 2
8422
                lea     ecx, [ecx+edi-359D3E2Ah]
8423
                mov     edi, edx
8424
                rol     edi, 5
8425
                add     ecx, edi
8426
                mov     edi, eax
8427
                xor     edi, ebp
8428
                xor     edi, edx
8429
                add     ebx, edi
8430
                mov     edi, [esi+124h]
8431
                ror     edx, 2
8432
                lea     ebx, [ebx+edi-359D3E2Ah]
8433
                mov     edi, ecx
8434
                rol     edi, 5
8435
                add     ebx, edi
8436
                mov     edi, ebp
8437
                xor     edi, edx
8438
                xor     edi, ecx
8439
                add     eax, edi
8440
                mov     edi, [esi+128h]
8441
                ror     ecx, 2
8442
                lea     eax, [eax+edi-359D3E2Ah]
8443
                mov     edi, ebx
8444
                rol     edi, 5
8445
                add     eax, edi
8446
                mov     edi, edx
8447
                xor     edi, ecx
8448
                xor     edi, ebx
8449
                add     ebp, edi
8450
                mov     edi, [esi+12Ch]
8451
                ror     ebx, 2
8452
                lea     ebp, [ebp+edi-359D3E2Ah]
8453
                mov     edi, eax
8454
                rol     edi, 5
8455
                add     ebp, edi
8456
                mov     edi, ecx
8457
                xor     edi, ebx
8458
                xor     edi, eax
8459
                add     edx, edi
8460
                mov     edi, [esi+130h]
8461
                ror     eax, 2
8462
                lea     edx, [edx+edi-359D3E2Ah]
8463
                mov     edi, ebp
8464
                rol     edi, 5
8465
                add     edx, edi
8466
                mov     edi, ebx
8467
                xor     edi, eax
8468
                xor     edi, ebp
8469
                add     ecx, edi
8470
                mov     edi, [esi+134h]
8471
                ror     ebp, 2
8472
                lea     ecx, [ecx+edi-359D3E2Ah]
8473
                mov     edi, edx
8474
                rol     edi, 5
8475
                add     ecx, edi
8476
                mov     edi, eax
8477
                xor     edi, ebp
8478
                xor     edi, edx
8479
                add     ebx, edi
8480
                mov     edi, [esi+138h]
8481
                ror     edx, 2
8482
                lea     ebx, [ebx+edi-359D3E2Ah]
8483
                mov     edi, ecx
8484
                rol     edi, 5
8485
                add     ebx, edi
8486
                mov     edi, ebp
8487
                xor     edi, edx
8488
                xor     edi, ecx
8489
                add     eax, edi
8490
                mov     edi, [esi+13Ch]
8491
                ror     ecx, 2
8492
                lea     eax, [eax+edi-359D3E2Ah]
8493
                mov     edi, ebx
8494
                rol     edi, 5
8495
                add     eax, edi
8496
                mov     edi, [esp]
8497
                add     esp, 8
8498
                add     [edi], eax
8499
                mov     eax, [edi+4]
8500
                mov     esi, [edi+8]
8501
                add     ebx, eax
8502
                mov     eax, [edi+0Ch]
8503
                add     ecx, esi
8504
                mov     esi, [edi+10h]
8505
                mov     [edi+4], ebx
8506
                add     edx, eax
8507
                add     ebp, esi
8508
                mov     [edi+8], ecx
8509
                mov     [edi+0Ch], edx
8510
                mov     [edi+10h], ebp
8511
8512
                pop     ebp
8513
                pop     edi
8514
                pop     esi
8515
                pop     ebx
8516
  end;
8517
end;
8518
{$ENDIF} // DEFINE OLD_SHA_NAME
8519
{$ENDIF}
8520
8521
{$IFDEF THash_SHA256_asm}
8522
procedure SHA256Buffer(S, D: Pointer);
8523
asm
8524
                push ebx
8525
                push edi
8526
                mov  edi, eax
8527
                push esi
8528
                mov  esi, edx
8529
8530
                mov     eax, [esi]
8531
                mov     ebx, [esi+4]
8532
                bswap   eax
8533
                mov     ecx, [esi+8]
8534
                mov     edx, [esi+0Ch]
8535
                bswap   ebx
8536
                bswap   ecx
8537
                bswap   edx
8538
                mov     [edi], eax
8539
                mov     [edi+4], ebx
8540
                mov     [edi+8], ecx
8541
                mov     [edi+0Ch], edx
8542
                mov     eax, [esi+10h]
8543
                mov     ebx, [esi+14h]
8544
                bswap   eax
8545
                mov     ecx, [esi+18h]
8546
                mov     edx, [esi+1Ch]
8547
                bswap   ebx
8548
                bswap   ecx
8549
                bswap   edx
8550
                mov     [edi+10h], eax
8551
                mov     [edi+14h], ebx
8552
                mov     [edi+18h], ecx
8553
                mov     [edi+1Ch], edx
8554
                mov     eax, [esi+20h]
8555
                mov     ebx, [esi+24h]
8556
                bswap   eax
8557
                mov     ecx, [esi+28h]
8558
                mov     edx, [esi+2Ch]
8559
                bswap   ebx
8560
                bswap   ecx
8561
                bswap   edx
8562
                mov     [edi+20h], eax
8563
                mov     [edi+24h], ebx
8564
                mov     [edi+28h], ecx
8565
                mov     [edi+2Ch], edx
8566
                mov     eax, [esi+30h]
8567
                mov     ebx, [esi+34h]
8568
                bswap   eax
8569
                mov     ecx, [esi+38h]
8570
                mov     edx, [esi+3Ch]
8571
                bswap   ebx
8572
                bswap   ecx
8573
                bswap   edx
8574
                mov     [edi+30h], eax
8575
                mov     [edi+34h], ebx
8576
                mov     [edi+38h], ecx
8577
                mov     [edi+3Ch], edx
8578
8579
                pop  esi
8580
                pop  edi
8581
                pop  ebx
8582
end;
8583
8584
procedure THash_SHA256.DoTransform(Buffer: PUInt32Array);
8585
var
8586
  W: array[0..63] of LongWord;
8587
begin
8588
  // swap first 16 uint32
8589
  SHA256Buffer(@W, Buffer);
8590
  asm
8591
                push    ebx
8592
                push    esi
8593
                push    edi
8594
                push    ebp
8595
8596
                mov     eax, Self
8597
                lea     edi, [eax].THash_SHA256.FDigest
8598
                lea     esi, W
8599
8600
                mov     eax, esp
8601
                add     esp, 0FFFFFFD4h
8602
                and     esp, 0FFFFFFC0h
8603
                mov     [esp+20h], esi
8604
                mov     [esp+24h], edi
8605
                mov     [esp+28h], eax
8606
                mov     edi, [esi]
8607
                mov     eax, [esi+4]
8608
                mov     edx, [esi+24h]
8609
                mov     ebx, [esi+38h]
8610
                mov     ecx, eax
8611
                ror     ecx, 7
8612
                shr     eax, 3
8613
                mov     ebp, ebx
8614
                shr     ebx, 0Ah
8615
                xor     eax, ecx
8616
                ror     ecx, 0Bh
8617
                rol     ebp, 0Fh
8618
                xor     eax, ecx
8619
                xor     ebx, ebp
8620
                ror     ebp, 2
8621
                xor     ebx, ebp
8622
                add     edx, edi
8623
                add     eax, ebx
8624
                mov     edi, [esi+4]
8625
                add     edx, eax
8626
                mov     eax, [esi+8]
8627
                mov     [esi+40h], edx
8628
                mov     edx, [esi+28h]
8629
                mov     ebx, [esi+3Ch]
8630
                mov     ecx, eax
8631
                ror     ecx, 7
8632
                shr     eax, 3
8633
                mov     ebp, ebx
8634
                shr     ebx, 0Ah
8635
                xor     eax, ecx
8636
                ror     ecx, 0Bh
8637
                rol     ebp, 0Fh
8638
                xor     eax, ecx
8639
                xor     ebx, ebp
8640
                ror     ebp, 2
8641
                xor     ebx, ebp
8642
                add     edx, edi
8643
                add     eax, ebx
8644
                mov     edi, [esi+8]
8645
                add     edx, eax
8646
                mov     eax, [esi+0Ch]
8647
                mov     [esi+44h], edx
8648
                mov     edx, [esi+2Ch]
8649
                mov     ebx, [esi+40h]
8650
                mov     ecx, eax
8651
                ror     ecx, 7
8652
                shr     eax, 3
8653
                mov     ebp, ebx
8654
                shr     ebx, 0Ah
8655
                xor     eax, ecx
8656
                ror     ecx, 0Bh
8657
                rol     ebp, 0Fh
8658
                xor     eax, ecx
8659
                xor     ebx, ebp
8660
                ror     ebp, 2
8661
                xor     ebx, ebp
8662
                add     edx, edi
8663
                add     eax, ebx
8664
                mov     edi, [esi+0Ch]
8665
                add     edx, eax
8666
                mov     eax, [esi+10h]
8667
                mov     [esi+48h], edx
8668
                mov     edx, [esi+30h]
8669
                mov     ebx, [esi+44h]
8670
                mov     ecx, eax
8671
                ror     ecx, 7
8672
                shr     eax, 3
8673
                mov     ebp, ebx
8674
                shr     ebx, 0Ah
8675
                xor     eax, ecx
8676
                ror     ecx, 0Bh
8677
                rol     ebp, 0Fh
8678
                xor     eax, ecx
8679
                xor     ebx, ebp
8680
                ror     ebp, 2
8681
                xor     ebx, ebp
8682
                add     edx, edi
8683
                add     eax, ebx
8684
                mov     edi, [esi+10h]
8685
                add     edx, eax
8686
                mov     eax, [esi+14h]
8687
                mov     [esi+4Ch], edx
8688
                mov     edx, [esi+34h]
8689
                mov     ebx, [esi+48h]
8690
                mov     ecx, eax
8691
                ror     ecx, 7
8692
                shr     eax, 3
8693
                mov     ebp, ebx
8694
                shr     ebx, 0Ah
8695
                xor     eax, ecx
8696
                ror     ecx, 0Bh
8697
                rol     ebp, 0Fh
8698
                xor     eax, ecx
8699
                xor     ebx, ebp
8700
                ror     ebp, 2
8701
                xor     ebx, ebp
8702
                add     edx, edi
8703
                add     eax, ebx
8704
                mov     edi, [esi+14h]
8705
                add     edx, eax
8706
                mov     eax, [esi+18h]
8707
                mov     [esi+50h], edx
8708
                mov     edx, [esi+38h]
8709
                mov     ebx, [esi+4Ch]
8710
                mov     ecx, eax
8711
                ror     ecx, 7
8712
                shr     eax, 3
8713
                mov     ebp, ebx
8714
                shr     ebx, 0Ah
8715
                xor     eax, ecx
8716
                ror     ecx, 0Bh
8717
                rol     ebp, 0Fh
8718
                xor     eax, ecx
8719
                xor     ebx, ebp
8720
                ror     ebp, 2
8721
                xor     ebx, ebp
8722
                add     edx, edi
8723
                add     eax, ebx
8724
                mov     edi, [esi+18h]
8725
                add     edx, eax
8726
                mov     eax, [esi+1Ch]
8727
                mov     [esi+54h], edx
8728
                mov     edx, [esi+3Ch]
8729
                mov     ebx, [esi+50h]
8730
                mov     ecx, eax
8731
                ror     ecx, 7
8732
                shr     eax, 3
8733
                mov     ebp, ebx
8734
                shr     ebx, 0Ah
8735
                xor     eax, ecx
8736
                ror     ecx, 0Bh
8737
                rol     ebp, 0Fh
8738
                xor     eax, ecx
8739
                xor     ebx, ebp
8740
                ror     ebp, 2
8741
                xor     ebx, ebp
8742
                add     edx, edi
8743
                add     eax, ebx
8744
                mov     edi, [esi+1Ch]
8745
                add     edx, eax
8746
                mov     eax, [esi+20h]
8747
                mov     [esi+58h], edx
8748
                mov     edx, [esi+40h]
8749
                mov     ebx, [esi+54h]
8750
                mov     ecx, eax
8751
                ror     ecx, 7
8752
                shr     eax, 3
8753
                mov     ebp, ebx
8754
                shr     ebx, 0Ah
8755
                xor     eax, ecx
8756
                ror     ecx, 0Bh
8757
                rol     ebp, 0Fh
8758
                xor     eax, ecx
8759
                xor     ebx, ebp
8760
                ror     ebp, 2
8761
                xor     ebx, ebp
8762
                add     edx, edi
8763
                add     eax, ebx
8764
                mov     edi, [esi+20h]
8765
                add     edx, eax
8766
                mov     eax, [esi+24h]
8767
                mov     [esi+5Ch], edx
8768
                mov     edx, [esi+44h]
8769
                mov     ebx, [esi+58h]
8770
                mov     ecx, eax
8771
                ror     ecx, 7
8772
                shr     eax, 3
8773
                mov     ebp, ebx
8774
                shr     ebx, 0Ah
8775
                xor     eax, ecx
8776
                ror     ecx, 0Bh
8777
                rol     ebp, 0Fh
8778
                xor     eax, ecx
8779
                xor     ebx, ebp
8780
                ror     ebp, 2
8781
                xor     ebx, ebp
8782
                add     edx, edi
8783
                add     eax, ebx
8784
                mov     edi, [esi+24h]
8785
                add     edx, eax
8786
                mov     eax, [esi+28h]
8787
                mov     [esi+60h], edx
8788
                mov     edx, [esi+48h]
8789
                mov     ebx, [esi+5Ch]
8790
                mov     ecx, eax
8791
                ror     ecx, 7
8792
                shr     eax, 3
8793
                mov     ebp, ebx
8794
                shr     ebx, 0Ah
8795
                xor     eax, ecx
8796
                ror     ecx, 0Bh
8797
                rol     ebp, 0Fh
8798
                xor     eax, ecx
8799
                xor     ebx, ebp
8800
                ror     ebp, 2
8801
                xor     ebx, ebp
8802
                add     edx, edi
8803
                add     eax, ebx
8804
                mov     edi, [esi+28h]
8805
                add     edx, eax
8806
                mov     eax, [esi+2Ch]
8807
                mov     [esi+64h], edx
8808
                mov     edx, [esi+4Ch]
8809
                mov     ebx, [esi+60h]
8810
                mov     ecx, eax
8811
                ror     ecx, 7
8812
                shr     eax, 3
8813
                mov     ebp, ebx
8814
                shr     ebx, 0Ah
8815
                xor     eax, ecx
8816
                ror     ecx, 0Bh
8817
                rol     ebp, 0Fh
8818
                xor     eax, ecx
8819
                xor     ebx, ebp
8820
                ror     ebp, 2
8821
                xor     ebx, ebp
8822
                add     edx, edi
8823
                add     eax, ebx
8824
                mov     edi, [esi+2Ch]
8825
                add     edx, eax
8826
                mov     eax, [esi+30h]
8827
                mov     [esi+68h], edx
8828
                mov     edx, [esi+50h]
8829
                mov     ebx, [esi+64h]
8830
                mov     ecx, eax
8831
                ror     ecx, 7
8832
                shr     eax, 3
8833
                mov     ebp, ebx
8834
                shr     ebx, 0Ah
8835
                xor     eax, ecx
8836
                ror     ecx, 0Bh
8837
                rol     ebp, 0Fh
8838
                xor     eax, ecx
8839
                xor     ebx, ebp
8840
                ror     ebp, 2
8841
                xor     ebx, ebp
8842
                add     edx, edi
8843
                add     eax, ebx
8844
                mov     edi, [esi+30h]
8845
                add     edx, eax
8846
                mov     eax, [esi+34h]
8847
                mov     [esi+6Ch], edx
8848
                mov     edx, [esi+54h]
8849
                mov     ebx, [esi+68h]
8850
                mov     ecx, eax
8851
                ror     ecx, 7
8852
                shr     eax, 3
8853
                mov     ebp, ebx
8854
                shr     ebx, 0Ah
8855
                xor     eax, ecx
8856
                ror     ecx, 0Bh
8857
                rol     ebp, 0Fh
8858
                xor     eax, ecx
8859
                xor     ebx, ebp
8860
                ror     ebp, 2
8861
                xor     ebx, ebp
8862
                add     edx, edi
8863
                add     eax, ebx
8864
                mov     edi, [esi+34h]
8865
                add     edx, eax
8866
                mov     eax, [esi+38h]
8867
                mov     [esi+70h], edx
8868
                mov     edx, [esi+58h]
8869
                mov     ebx, [esi+6Ch]
8870
                mov     ecx, eax
8871
                ror     ecx, 7
8872
                shr     eax, 3
8873
                mov     ebp, ebx
8874
                shr     ebx, 0Ah
8875
                xor     eax, ecx
8876
                ror     ecx, 0Bh
8877
                rol     ebp, 0Fh
8878
                xor     eax, ecx
8879
                xor     ebx, ebp
8880
                ror     ebp, 2
8881
                xor     ebx, ebp
8882
                add     edx, edi
8883
                add     eax, ebx
8884
                mov     edi, [esi+38h]
8885
                add     edx, eax
8886
                mov     eax, [esi+3Ch]
8887
                mov     [esi+74h], edx
8888
                mov     edx, [esi+5Ch]
8889
                mov     ebx, [esi+70h]
8890
                mov     ecx, eax
8891
                ror     ecx, 7
8892
                shr     eax, 3
8893
                mov     ebp, ebx
8894
                shr     ebx, 0Ah
8895
                xor     eax, ecx
8896
                ror     ecx, 0Bh
8897
                rol     ebp, 0Fh
8898
                xor     eax, ecx
8899
                xor     ebx, ebp
8900
                ror     ebp, 2
8901
                xor     ebx, ebp
8902
                add     edx, edi
8903
                add     eax, ebx
8904
                mov     edi, [esi+3Ch]
8905
                add     edx, eax
8906
                mov     eax, [esi+40h]
8907
                mov     [esi+78h], edx
8908
                mov     edx, [esi+60h]
8909
                mov     ebx, [esi+74h]
8910
                mov     ecx, eax
8911
                ror     ecx, 7
8912
                shr     eax, 3
8913
                mov     ebp, ebx
8914
                shr     ebx, 0Ah
8915
                xor     eax, ecx
8916
                ror     ecx, 0Bh
8917
                rol     ebp, 0Fh
8918
                xor     eax, ecx
8919
                xor     ebx, ebp
8920
                ror     ebp, 2
8921
                xor     ebx, ebp
8922
                add     edx, edi
8923
                add     eax, ebx
8924
                mov     edi, [esi+40h]
8925
                add     edx, eax
8926
                mov     eax, [esi+44h]
8927
                mov     [esi+7Ch], edx
8928
                mov     edx, [esi+64h]
8929
                mov     ebx, [esi+78h]
8930
                mov     ecx, eax
8931
                ror     ecx, 7
8932
                shr     eax, 3
8933
                mov     ebp, ebx
8934
                shr     ebx, 0Ah
8935
                xor     eax, ecx
8936
                ror     ecx, 0Bh
8937
                rol     ebp, 0Fh
8938
                xor     eax, ecx
8939
                xor     ebx, ebp
8940
                ror     ebp, 2
8941
                xor     ebx, ebp
8942
                add     edx, edi
8943
                add     eax, ebx
8944
                mov     edi, [esi+44h]
8945
                add     edx, eax
8946
                mov     eax, [esi+48h]
8947
                mov     [esi+80h], edx
8948
                mov     edx, [esi+68h]
8949
                mov     ebx, [esi+7Ch]
8950
                mov     ecx, eax
8951
                ror     ecx, 7
8952
                shr     eax, 3
8953
                mov     ebp, ebx
8954
                shr     ebx, 0Ah
8955
                xor     eax, ecx
8956
                ror     ecx, 0Bh
8957
                rol     ebp, 0Fh
8958
                xor     eax, ecx
8959
                xor     ebx, ebp
8960
                ror     ebp, 2
8961
                xor     ebx, ebp
8962
                add     edx, edi
8963
                add     eax, ebx
8964
                mov     edi, [esi+48h]
8965
                add     edx, eax
8966
                mov     eax, [esi+4Ch]
8967
                mov     [esi+84h], edx
8968
                mov     edx, [esi+6Ch]
8969
                mov     ebx, [esi+80h]
8970
                mov     ecx, eax
8971
                ror     ecx, 7
8972
                shr     eax, 3
8973
                mov     ebp, ebx
8974
                shr     ebx, 0Ah
8975
                xor     eax, ecx
8976
                ror     ecx, 0Bh
8977
                rol     ebp, 0Fh
8978
                xor     eax, ecx
8979
                xor     ebx, ebp
8980
                ror     ebp, 2
8981
                xor     ebx, ebp
8982
                add     edx, edi
8983
                add     eax, ebx
8984
                mov     edi, [esi+4Ch]
8985
                add     edx, eax
8986
                mov     eax, [esi+50h]
8987
                mov     [esi+88h], edx
8988
                mov     edx, [esi+70h]
8989
                mov     ebx, [esi+84h]
8990
                mov     ecx, eax
8991
                ror     ecx, 7
8992
                shr     eax, 3
8993
                mov     ebp, ebx
8994
                shr     ebx, 0Ah
8995
                xor     eax, ecx
8996
                ror     ecx, 0Bh
8997
                rol     ebp, 0Fh
8998
                xor     eax, ecx
8999
                xor     ebx, ebp
9000
                ror     ebp, 2
9001
                xor     ebx, ebp
9002
                add     edx, edi
9003
                add     eax, ebx
9004
                mov     edi, [esi+50h]
9005
                add     edx, eax
9006
                mov     eax, [esi+54h]
9007
                mov     [esi+8Ch], edx
9008
                mov     edx, [esi+74h]
9009
                mov     ebx, [esi+88h]
9010
                mov     ecx, eax
9011
                ror     ecx, 7
9012
                shr     eax, 3
9013
                mov     ebp, ebx
9014
                shr     ebx, 0Ah
9015
                xor     eax, ecx
9016
                ror     ecx, 0Bh
9017
                rol     ebp, 0Fh
9018
                xor     eax, ecx
9019
                xor     ebx, ebp
9020
                ror     ebp, 2
9021
                xor     ebx, ebp
9022
                add     edx, edi
9023
                add     eax, ebx
9024
                mov     edi, [esi+54h]
9025
                add     edx, eax
9026
                mov     eax, [esi+58h]
9027
                mov     [esi+90h], edx
9028
                mov     edx, [esi+78h]
9029
                mov     ebx, [esi+8Ch]
9030
                mov     ecx, eax
9031
                ror     ecx, 7
9032
                shr     eax, 3
9033
                mov     ebp, ebx
9034
                shr     ebx, 0Ah
9035
                xor     eax, ecx
9036
                ror     ecx, 0Bh
9037
                rol     ebp, 0Fh
9038
                xor     eax, ecx
9039
                xor     ebx, ebp
9040
                ror     ebp, 2
9041
                xor     ebx, ebp
9042
                add     edx, edi
9043
                add     eax, ebx
9044
                mov     edi, [esi+58h]
9045
                add     edx, eax
9046
                mov     eax, [esi+5Ch]
9047
                mov     [esi+94h], edx
9048
                mov     edx, [esi+7Ch]
9049
                mov     ebx, [esi+90h]
9050
                mov     ecx, eax
9051
                ror     ecx, 7
9052
                shr     eax, 3
9053
                mov     ebp, ebx
9054
                shr     ebx, 0Ah
9055
                xor     eax, ecx
9056
                ror     ecx, 0Bh
9057
                rol     ebp, 0Fh
9058
                xor     eax, ecx
9059
                xor     ebx, ebp
9060
                ror     ebp, 2
9061
                xor     ebx, ebp
9062
                add     edx, edi
9063
                add     eax, ebx
9064
                mov     edi, [esi+5Ch]
9065
                add     edx, eax
9066
                mov     eax, [esi+60h]
9067
                mov     [esi+98h], edx
9068
                mov     edx, [esi+80h]
9069
                mov     ebx, [esi+94h]
9070
                mov     ecx, eax
9071
                ror     ecx, 7
9072
                shr     eax, 3
9073
                mov     ebp, ebx
9074
                shr     ebx, 0Ah
9075
                xor     eax, ecx
9076
                ror     ecx, 0Bh
9077
                rol     ebp, 0Fh
9078
                xor     eax, ecx
9079
                xor     ebx, ebp
9080
                ror     ebp, 2
9081
                xor     ebx, ebp
9082
                add     edx, edi
9083
                add     eax, ebx
9084
                mov     edi, [esi+60h]
9085
                add     edx, eax
9086
                mov     eax, [esi+64h]
9087
                mov     [esi+9Ch], edx
9088
                mov     edx, [esi+84h]
9089
                mov     ebx, [esi+98h]
9090
                mov     ecx, eax
9091
                ror     ecx, 7
9092
                shr     eax, 3
9093
                mov     ebp, ebx
9094
                shr     ebx, 0Ah
9095
                xor     eax, ecx
9096
                ror     ecx, 0Bh
9097
                rol     ebp, 0Fh
9098
                xor     eax, ecx
9099
                xor     ebx, ebp
9100
                ror     ebp, 2
9101
                xor     ebx, ebp
9102
                add     edx, edi
9103
                add     eax, ebx
9104
                mov     edi, [esi+64h]
9105
                add     edx, eax
9106
                mov     eax, [esi+68h]
9107
                mov     [esi+0A0h], edx
9108
                mov     edx, [esi+88h]
9109
                mov     ebx, [esi+9Ch]
9110
                mov     ecx, eax
9111
                ror     ecx, 7
9112
                shr     eax, 3
9113
                mov     ebp, ebx
9114
                shr     ebx, 0Ah
9115
                xor     eax, ecx
9116
                ror     ecx, 0Bh
9117
                rol     ebp, 0Fh
9118
                xor     eax, ecx
9119
                xor     ebx, ebp
9120
                ror     ebp, 2
9121
                xor     ebx, ebp
9122
                add     edx, edi
9123
                add     eax, ebx
9124
                mov     edi, [esi+68h]
9125
                add     edx, eax
9126
                mov     eax, [esi+6Ch]
9127
                mov     [esi+0A4h], edx
9128
                mov     edx, [esi+8Ch]
9129
                mov     ebx, [esi+0A0h]
9130
                mov     ecx, eax
9131
                ror     ecx, 7
9132
                shr     eax, 3
9133
                mov     ebp, ebx
9134
                shr     ebx, 0Ah
9135
                xor     eax, ecx
9136
                ror     ecx, 0Bh
9137
                rol     ebp, 0Fh
9138
                xor     eax, ecx
9139
                xor     ebx, ebp
9140
                ror     ebp, 2
9141
                xor     ebx, ebp
9142
                add     edx, edi
9143
                add     eax, ebx
9144
                mov     edi, [esi+6Ch]
9145
                add     edx, eax
9146
                mov     eax, [esi+70h]
9147
                mov     [esi+0A8h], edx
9148
                mov     edx, [esi+90h]
9149
                mov     ebx, [esi+0A4h]
9150
                mov     ecx, eax
9151
                ror     ecx, 7
9152
                shr     eax, 3
9153
                mov     ebp, ebx
9154
                shr     ebx, 0Ah
9155
                xor     eax, ecx
9156
                ror     ecx, 0Bh
9157
                rol     ebp, 0Fh
9158
                xor     eax, ecx
9159
                xor     ebx, ebp
9160
                ror     ebp, 2
9161
                xor     ebx, ebp
9162
                add     edx, edi
9163
                add     eax, ebx
9164
                mov     edi, [esi+70h]
9165
                add     edx, eax
9166
                mov     eax, [esi+74h]
9167
                mov     [esi+0ACh], edx
9168
                mov     edx, [esi+94h]
9169
                mov     ebx, [esi+0A8h]
9170
                mov     ecx, eax
9171
                ror     ecx, 7
9172
                shr     eax, 3
9173
                mov     ebp, ebx
9174
                shr     ebx, 0Ah
9175
                xor     eax, ecx
9176
                ror     ecx, 0Bh
9177
                rol     ebp, 0Fh
9178
                xor     eax, ecx
9179
                xor     ebx, ebp
9180
                ror     ebp, 2
9181
                xor     ebx, ebp
9182
                add     edx, edi
9183
                add     eax, ebx
9184
                mov     edi, [esi+74h]
9185
                add     edx, eax
9186
                mov     eax, [esi+78h]
9187
                mov     [esi+0B0h], edx
9188
                mov     edx, [esi+98h]
9189
                mov     ebx, [esi+0ACh]
9190
                mov     ecx, eax
9191
                ror     ecx, 7
9192
                shr     eax, 3
9193
                mov     ebp, ebx
9194
                shr     ebx, 0Ah
9195
                xor     eax, ecx
9196
                ror     ecx, 0Bh
9197
                rol     ebp, 0Fh
9198
                xor     eax, ecx
9199
                xor     ebx, ebp
9200
                ror     ebp, 2
9201
                xor     ebx, ebp
9202
                add     edx, edi
9203
                add     eax, ebx
9204
                mov     edi, [esi+78h]
9205
                add     edx, eax
9206
                mov     eax, [esi+7Ch]
9207
                mov     [esi+0B4h], edx
9208
                mov     edx, [esi+9Ch]
9209
                mov     ebx, [esi+0B0h]
9210
                mov     ecx, eax
9211
                ror     ecx, 7
9212
                shr     eax, 3
9213
                mov     ebp, ebx
9214
                shr     ebx, 0Ah
9215
                xor     eax, ecx
9216
                ror     ecx, 0Bh
9217
                rol     ebp, 0Fh
9218
                xor     eax, ecx
9219
                xor     ebx, ebp
9220
                ror     ebp, 2
9221
                xor     ebx, ebp
9222
                add     edx, edi
9223
                add     eax, ebx
9224
                mov     edi, [esi+7Ch]
9225
                add     edx, eax
9226
                mov     eax, [esi+80h]
9227
                mov     [esi+0B8h], edx
9228
                mov     edx, [esi+0A0h]
9229
                mov     ebx, [esi+0B4h]
9230
                mov     ecx, eax
9231
                ror     ecx, 7
9232
                shr     eax, 3
9233
                mov     ebp, ebx
9234
                shr     ebx, 0Ah
9235
                xor     eax, ecx
9236
                ror     ecx, 0Bh
9237
                rol     ebp, 0Fh
9238
                xor     eax, ecx
9239
                xor     ebx, ebp
9240
                ror     ebp, 2
9241
                xor     ebx, ebp
9242
                add     edx, edi
9243
                add     eax, ebx
9244
                mov     edi, [esi+80h]
9245
                add     edx, eax
9246
                mov     eax, [esi+84h]
9247
                mov     [esi+0BCh], edx
9248
                mov     edx, [esi+0A4h]
9249
                mov     ebx, [esi+0B8h]
9250
                mov     ecx, eax
9251
                ror     ecx, 7
9252
                shr     eax, 3
9253
                mov     ebp, ebx
9254
                shr     ebx, 0Ah
9255
                xor     eax, ecx
9256
                ror     ecx, 0Bh
9257
                rol     ebp, 0Fh
9258
                xor     eax, ecx
9259
                xor     ebx, ebp
9260
                ror     ebp, 2
9261
                xor     ebx, ebp
9262
                add     edx, edi
9263
                add     eax, ebx
9264
                mov     edi, [esi+84h]
9265
                add     edx, eax
9266
                mov     eax, [esi+88h]
9267
                mov     [esi+0C0h], edx
9268
                mov     edx, [esi+0A8h]
9269
                mov     ebx, [esi+0BCh]
9270
                mov     ecx, eax
9271
                ror     ecx, 7
9272
                shr     eax, 3
9273
                mov     ebp, ebx
9274
                shr     ebx, 0Ah
9275
                xor     eax, ecx
9276
                ror     ecx, 0Bh
9277
                rol     ebp, 0Fh
9278
                xor     eax, ecx
9279
                xor     ebx, ebp
9280
                ror     ebp, 2
9281
                xor     ebx, ebp
9282
                add     edx, edi
9283
                add     eax, ebx
9284
                mov     edi, [esi+88h]
9285
                add     edx, eax
9286
                mov     eax, [esi+8Ch]
9287
                mov     [esi+0C4h], edx
9288
                mov     edx, [esi+0ACh]
9289
                mov     ebx, [esi+0C0h]
9290
                mov     ecx, eax
9291
                ror     ecx, 7
9292
                shr     eax, 3
9293
                mov     ebp, ebx
9294
                shr     ebx, 0Ah
9295
                xor     eax, ecx
9296
                ror     ecx, 0Bh
9297
                rol     ebp, 0Fh
9298
                xor     eax, ecx
9299
                xor     ebx, ebp
9300
                ror     ebp, 2
9301
                xor     ebx, ebp
9302
                add     edx, edi
9303
                add     eax, ebx
9304
                mov     edi, [esi+8Ch]
9305
                add     edx, eax
9306
                mov     eax, [esi+90h]
9307
                mov     [esi+0C8h], edx
9308
                mov     edx, [esi+0B0h]
9309
                mov     ebx, [esi+0C4h]
9310
                mov     ecx, eax
9311
                ror     ecx, 7
9312
                shr     eax, 3
9313
                mov     ebp, ebx
9314
                shr     ebx, 0Ah
9315
                xor     eax, ecx
9316
                ror     ecx, 0Bh
9317
                rol     ebp, 0Fh
9318
                xor     eax, ecx
9319
                xor     ebx, ebp
9320
                ror     ebp, 2
9321
                xor     ebx, ebp
9322
                add     edx, edi
9323
                add     eax, ebx
9324
                mov     edi, [esi+90h]
9325
                add     edx, eax
9326
                mov     eax, [esi+94h]
9327
                mov     [esi+0CCh], edx
9328
                mov     edx, [esi+0B4h]
9329
                mov     ebx, [esi+0C8h]
9330
                mov     ecx, eax
9331
                ror     ecx, 7
9332
                shr     eax, 3
9333
                mov     ebp, ebx
9334
                shr     ebx, 0Ah
9335
                xor     eax, ecx
9336
                ror     ecx, 0Bh
9337
                rol     ebp, 0Fh
9338
                xor     eax, ecx
9339
                xor     ebx, ebp
9340
                ror     ebp, 2
9341
                xor     ebx, ebp
9342
                add     edx, edi
9343
                add     eax, ebx
9344
                mov     edi, [esi+94h]
9345
                add     edx, eax
9346
                mov     eax, [esi+98h]
9347
                mov     [esi+0D0h], edx
9348
                mov     edx, [esi+0B8h]
9349
                mov     ebx, [esi+0CCh]
9350
                mov     ecx, eax
9351
                ror     ecx, 7
9352
                shr     eax, 3
9353
                mov     ebp, ebx
9354
                shr     ebx, 0Ah
9355
                xor     eax, ecx
9356
                ror     ecx, 0Bh
9357
                rol     ebp, 0Fh
9358
                xor     eax, ecx
9359
                xor     ebx, ebp
9360
                ror     ebp, 2
9361
                xor     ebx, ebp
9362
                add     edx, edi
9363
                add     eax, ebx
9364
                mov     edi, [esi+98h]
9365
                add     edx, eax
9366
                mov     eax, [esi+9Ch]
9367
                mov     [esi+0D4h], edx
9368
                mov     edx, [esi+0BCh]
9369
                mov     ebx, [esi+0D0h]
9370
                mov     ecx, eax
9371
                ror     ecx, 7
9372
                shr     eax, 3
9373
                mov     ebp, ebx
9374
                shr     ebx, 0Ah
9375
                xor     eax, ecx
9376
                ror     ecx, 0Bh
9377
                rol     ebp, 0Fh
9378
                xor     eax, ecx
9379
                xor     ebx, ebp
9380
                ror     ebp, 2
9381
                xor     ebx, ebp
9382
                add     edx, edi
9383
                add     eax, ebx
9384
                mov     edi, [esi+9Ch]
9385
                add     edx, eax
9386
                mov     eax, [esi+0A0h]
9387
                mov     [esi+0D8h], edx
9388
                mov     edx, [esi+0C0h]
9389
                mov     ebx, [esi+0D4h]
9390
                mov     ecx, eax
9391
                ror     ecx, 7
9392
                shr     eax, 3
9393
                mov     ebp, ebx
9394
                shr     ebx, 0Ah
9395
                xor     eax, ecx
9396
                ror     ecx, 0Bh
9397
                rol     ebp, 0Fh
9398
                xor     eax, ecx
9399
                xor     ebx, ebp
9400
                ror     ebp, 2
9401
                xor     ebx, ebp
9402
                add     edx, edi
9403
                add     eax, ebx
9404
                mov     edi, [esi+0A0h]
9405
                add     edx, eax
9406
                mov     eax, [esi+0A4h]
9407
                mov     [esi+0DCh], edx
9408
                mov     edx, [esi+0C4h]
9409
                mov     ebx, [esi+0D8h]
9410
                mov     ecx, eax
9411
                ror     ecx, 7
9412
                shr     eax, 3
9413
                mov     ebp, ebx
9414
                shr     ebx, 0Ah
9415
                xor     eax, ecx
9416
                ror     ecx, 0Bh
9417
                rol     ebp, 0Fh
9418
                xor     eax, ecx
9419
                xor     ebx, ebp
9420
                ror     ebp, 2
9421
                xor     ebx, ebp
9422
                add     edx, edi
9423
                add     eax, ebx
9424
                mov     edi, [esi+0A4h]
9425
                add     edx, eax
9426
                mov     eax, [esi+0A8h]
9427
                mov     [esi+0E0h], edx
9428
                mov     edx, [esi+0C8h]
9429
                mov     ebx, [esi+0DCh]
9430
                mov     ecx, eax
9431
                ror     ecx, 7
9432
                shr     eax, 3
9433
                mov     ebp, ebx
9434
                shr     ebx, 0Ah
9435
                xor     eax, ecx
9436
                ror     ecx, 0Bh
9437
                rol     ebp, 0Fh
9438
                xor     eax, ecx
9439
                xor     ebx, ebp
9440
                ror     ebp, 2
9441
                xor     ebx, ebp
9442
                add     edx, edi
9443
                add     eax, ebx
9444
                mov     edi, [esi+0A8h]
9445
                add     edx, eax
9446
                mov     eax, [esi+0ACh]
9447
                mov     [esi+0E4h], edx
9448
                mov     edx, [esi+0CCh]
9449
                mov     ebx, [esi+0E0h]
9450
                mov     ecx, eax
9451
                ror     ecx, 7
9452
                shr     eax, 3
9453
                mov     ebp, ebx
9454
                shr     ebx, 0Ah
9455
                xor     eax, ecx
9456
                ror     ecx, 0Bh
9457
                rol     ebp, 0Fh
9458
                xor     eax, ecx
9459
                xor     ebx, ebp
9460
                ror     ebp, 2
9461
                xor     ebx, ebp
9462
                add     edx, edi
9463
                add     eax, ebx
9464
                mov     edi, [esi+0ACh]
9465
                add     edx, eax
9466
                mov     eax, [esi+0B0h]
9467
                mov     [esi+0E8h], edx
9468
                mov     edx, [esi+0D0h]
9469
                mov     ebx, [esi+0E4h]
9470
                mov     ecx, eax
9471
                ror     ecx, 7
9472
                shr     eax, 3
9473
                mov     ebp, ebx
9474
                shr     ebx, 0Ah
9475
                xor     eax, ecx
9476
                ror     ecx, 0Bh
9477
                rol     ebp, 0Fh
9478
                xor     eax, ecx
9479
                xor     ebx, ebp
9480
                ror     ebp, 2
9481
                xor     ebx, ebp
9482
                add     edx, edi
9483
                add     eax, ebx
9484
                mov     edi, [esi+0B0h]
9485
                add     edx, eax
9486
                mov     eax, [esi+0B4h]
9487
                mov     [esi+0ECh], edx
9488
                mov     edx, [esi+0D4h]
9489
                mov     ebx, [esi+0E8h]
9490
                mov     ecx, eax
9491
                ror     ecx, 7
9492
                shr     eax, 3
9493
                mov     ebp, ebx
9494
                shr     ebx, 0Ah
9495
                xor     eax, ecx
9496
                ror     ecx, 0Bh
9497
                rol     ebp, 0Fh
9498
                xor     eax, ecx
9499
                xor     ebx, ebp
9500
                ror     ebp, 2
9501
                xor     ebx, ebp
9502
                add     edx, edi
9503
                add     eax, ebx
9504
                mov     edi, [esi+0B4h]
9505
                add     edx, eax
9506
                mov     eax, [esi+0B8h]
9507
                mov     [esi+0F0h], edx
9508
                mov     edx, [esi+0D8h]
9509
                mov     ebx, [esi+0ECh]
9510
                mov     ecx, eax
9511
                ror     ecx, 7
9512
                shr     eax, 3
9513
                mov     ebp, ebx
9514
                shr     ebx, 0Ah
9515
                xor     eax, ecx
9516
                ror     ecx, 0Bh
9517
                rol     ebp, 0Fh
9518
                xor     eax, ecx
9519
                xor     ebx, ebp
9520
                ror     ebp, 2
9521
                xor     ebx, ebp
9522
                add     edx, edi
9523
                add     eax, ebx
9524
                mov     edi, [esi+0B8h]
9525
                add     edx, eax
9526
                mov     eax, [esi+0BCh]
9527
                mov     [esi+0F4h], edx
9528
                mov     edx, [esi+0DCh]
9529
                mov     ebx, [esi+0F0h]
9530
                mov     ecx, eax
9531
                ror     ecx, 7
9532
                shr     eax, 3
9533
                mov     ebp, ebx
9534
                shr     ebx, 0Ah
9535
                xor     eax, ecx
9536
                ror     ecx, 0Bh
9537
                rol     ebp, 0Fh
9538
                xor     eax, ecx
9539
                xor     ebx, ebp
9540
                ror     ebp, 2
9541
                xor     ebx, ebp
9542
                add     edx, edi
9543
                add     eax, ebx
9544
                mov     edi, [esi+0BCh]
9545
                add     edx, eax
9546
                mov     eax, [esi+0C0h]
9547
                mov     [esi+0F8h], edx
9548
                mov     edx, [esi+0E0h]
9549
                mov     ebx, [esi+0F4h]
9550
                mov     ecx, eax
9551
                ror     ecx, 7
9552
                shr     eax, 3
9553
                mov     ebp, ebx
9554
                shr     ebx, 0Ah
9555
                xor     eax, ecx
9556
                ror     ecx, 0Bh
9557
                rol     ebp, 0Fh
9558
                xor     eax, ecx
9559
                xor     ebx, ebp
9560
                ror     ebp, 2
9561
                xor     ebx, ebp
9562
                add     edx, edi
9563
                add     eax, ebx
9564
                mov     edi, [esi+0C0h]
9565
                add     edx, eax
9566
                mov     eax, [esi+0C4h]
9567
                mov     [esi+0FCh], edx
9568
                mov     edi, [esp+24h]
9569
                mov     eax, [edi]
9570
                mov     ebx, [edi+4]
9571
                mov     ecx, [edi+8]
9572
                mov     edx, [edi+0Ch]
9573
                mov     [esp], eax
9574
                mov     [esp+4], ebx
9575
                mov     [esp+8], ecx
9576
                mov     [esp+0Ch], edx
9577
                mov     eax, [edi+10h]
9578
                mov     ebx, [edi+14h]
9579
                mov     ecx, [edi+18h]
9580
                mov     edx, [edi+1Ch]
9581
                mov     [esp+10h], eax
9582
                mov     [esp+14h], ebx
9583
                mov     [esp+18h], ecx
9584
                mov     [esp+1Ch], edx
9585
                mov     ebp, eax
9586
                mov     edi, eax
9587
                ror     ebp, 6
9588
                rol     edi, 7
9589
                xor     edi, ebp
9590
                ror     ebp, 5
9591
                xor     edi, ebp
9592
                mov     ebp, ebx
9593
                xor     ebp, ecx
9594
                and     ebp, eax
9595
                lea     edx, [edi+edx+428A2F98h]
9596
                mov     edi, [esp+4]
9597
                xor     ebp, ecx
9598
                add     edx, [esi]
9599
                add     edx, ebp
9600
                mov     ebp, [esp+8]
9601
                mov     eax, edi
9602
                and     edi, ebp
9603
                or      eax, ebp
9604
                mov     ebp, [esp]
9605
                and     eax, ebp
9606
                ror     ebp, 2
9607
                or      eax, edi
9608
                mov     edi, ebp
9609
                rol     edi, 0Ch
9610
                add     eax, edx
9611
                xor     ebp, edi
9612
                add     edx, [esp+0Ch]
9613
                rol     edi, 9
9614
                xor     ebp, edi
9615
                mov     [esp+0Ch], edx
9616
                add     eax, ebp
9617
                mov     [esp+1Ch], eax
9618
                mov     eax, [esp+10h]
9619
                mov     ebp, edx
9620
                mov     edi, edx
9621
                ror     ebp, 6
9622
                rol     edi, 7
9623
                xor     edi, ebp
9624
                ror     ebp, 5
9625
                xor     edi, ebp
9626
                mov     ebp, eax
9627
                xor     ebp, ebx
9628
                and     ebp, edx
9629
                lea     ecx, [edi+ecx+71374491h]
9630
                mov     edi, [esp]
9631
                xor     ebp, ebx
9632
                add     ecx, [esi+4]
9633
                add     ecx, ebp
9634
                mov     ebp, [esp+4]
9635
                mov     edx, edi
9636
                and     edi, ebp
9637
                or      edx, ebp
9638
                mov     ebp, [esp+1Ch]
9639
                and     edx, ebp
9640
                ror     ebp, 2
9641
                or      edx, edi
9642
                mov     edi, ebp
9643
                rol     edi, 0Ch
9644
                add     edx, ecx
9645
                xor     ebp, edi
9646
                add     ecx, [esp+8]
9647
                rol     edi, 9
9648
                xor     ebp, edi
9649
                mov     [esp+8], ecx
9650
                add     edx, ebp
9651
                mov     [esp+18h], edx
9652
                mov     edx, [esp+0Ch]
9653
                mov     ebp, ecx
9654
                mov     edi, ecx
9655
                ror     ebp, 6
9656
                rol     edi, 7
9657
                xor     edi, ebp
9658
                ror     ebp, 5
9659
                xor     edi, ebp
9660
                mov     ebp, edx
9661
                xor     ebp, eax
9662
                and     ebp, ecx
9663
                lea     ebx, [edi+ebx-4A3F0431h]
9664
                mov     edi, [esp+1Ch]
9665
                xor     ebp, eax
9666
                add     ebx, [esi+8]
9667
                add     ebx, ebp
9668
                mov     ebp, [esp]
9669
                mov     ecx, edi
9670
                and     edi, ebp
9671
                or      ecx, ebp
9672
                mov     ebp, [esp+18h]
9673
                and     ecx, ebp
9674
                ror     ebp, 2
9675
                or      ecx, edi
9676
                mov     edi, ebp
9677
                rol     edi, 0Ch
9678
                add     ecx, ebx
9679
                xor     ebp, edi
9680
                add     ebx, [esp+4]
9681
                rol     edi, 9
9682
                xor     ebp, edi
9683
                mov     [esp+4], ebx
9684
                add     ecx, ebp
9685
                mov     [esp+14h], ecx
9686
                mov     ecx, [esp+8]
9687
                mov     ebp, ebx
9688
                mov     edi, ebx
9689
                ror     ebp, 6
9690
                rol     edi, 7
9691
                xor     edi, ebp
9692
                ror     ebp, 5
9693
                xor     edi, ebp
9694
                mov     ebp, ecx
9695
                xor     ebp, edx
9696
                and     ebp, ebx
9697
                lea     eax, [edi+eax-164A245Bh]
9698
                mov     edi, [esp+18h]
9699
                xor     ebp, edx
9700
                add     eax, [esi+0Ch]
9701
                add     eax, ebp
9702
                mov     ebp, [esp+1Ch]
9703
                mov     ebx, edi
9704
                and     edi, ebp
9705
                or      ebx, ebp
9706
                mov     ebp, [esp+14h]
9707
                and     ebx, ebp
9708
                ror     ebp, 2
9709
                or      ebx, edi
9710
                mov     edi, ebp
9711
                rol     edi, 0Ch
9712
                add     ebx, eax
9713
                xor     ebp, edi
9714
                add     eax, [esp]
9715
                rol     edi, 9
9716
                xor     ebp, edi
9717
                mov     [esp], eax
9718
                add     ebx, ebp
9719
                mov     [esp+10h], ebx
9720
                mov     ebx, [esp+4]
9721
                mov     ebp, eax
9722
                mov     edi, eax
9723
                ror     ebp, 6
9724
                rol     edi, 7
9725
                xor     edi, ebp
9726
                ror     ebp, 5
9727
                xor     edi, ebp
9728
                mov     ebp, ebx
9729
                xor     ebp, ecx
9730
                and     ebp, eax
9731
                lea     edx, [edi+edx+3956C25Bh]
9732
                mov     edi, [esp+14h]
9733
                xor     ebp, ecx
9734
                add     edx, [esi+10h]
9735
                add     edx, ebp
9736
                mov     ebp, [esp+18h]
9737
                mov     eax, edi
9738
                and     edi, ebp
9739
                or      eax, ebp
9740
                mov     ebp, [esp+10h]
9741
                and     eax, ebp
9742
                ror     ebp, 2
9743
                or      eax, edi
9744
                mov     edi, ebp
9745
                rol     edi, 0Ch
9746
                add     eax, edx
9747
                xor     ebp, edi
9748
                add     edx, [esp+1Ch]
9749
                rol     edi, 9
9750
                xor     ebp, edi
9751
                mov     [esp+1Ch], edx
9752
                add     eax, ebp
9753
                mov     [esp+0Ch], eax
9754
                mov     eax, [esp]
9755
                mov     ebp, edx
9756
                mov     edi, edx
9757
                ror     ebp, 6
9758
                rol     edi, 7
9759
                xor     edi, ebp
9760
                ror     ebp, 5
9761
                xor     edi, ebp
9762
                mov     ebp, eax
9763
                xor     ebp, ebx
9764
                and     ebp, edx
9765
                lea     ecx, [edi+ecx+59F111F1h]
9766
                mov     edi, [esp+10h]
9767
                xor     ebp, ebx
9768
                add     ecx, [esi+14h]
9769
                add     ecx, ebp
9770
                mov     ebp, [esp+14h]
9771
                mov     edx, edi
9772
                and     edi, ebp
9773
                or      edx, ebp
9774
                mov     ebp, [esp+0Ch]
9775
                and     edx, ebp
9776
                ror     ebp, 2
9777
                or      edx, edi
9778
                mov     edi, ebp
9779
                rol     edi, 0Ch
9780
                add     edx, ecx
9781
                xor     ebp, edi
9782
                add     ecx, [esp+18h]
9783
                rol     edi, 9
9784
                xor     ebp, edi
9785
                mov     [esp+18h], ecx
9786
                add     edx, ebp
9787
                mov     [esp+8], edx
9788
                mov     edx, [esp+1Ch]
9789
                mov     ebp, ecx
9790
                mov     edi, ecx
9791
                ror     ebp, 6
9792
                rol     edi, 7
9793
                xor     edi, ebp
9794
                ror     ebp, 5
9795
                xor     edi, ebp
9796
                mov     ebp, edx
9797
                xor     ebp, eax
9798
                and     ebp, ecx
9799
                lea     ebx, [edi+ebx-6DC07D5Ch]
9800
                mov     edi, [esp+0Ch]
9801
                xor     ebp, eax
9802
                add     ebx, [esi+18h]
9803
                add     ebx, ebp
9804
                mov     ebp, [esp+10h]
9805
                mov     ecx, edi
9806
                and     edi, ebp
9807
                or      ecx, ebp
9808
                mov     ebp, [esp+8]
9809
                and     ecx, ebp
9810
                ror     ebp, 2
9811
                or      ecx, edi
9812
                mov     edi, ebp
9813
                rol     edi, 0Ch
9814
                add     ecx, ebx
9815
                xor     ebp, edi
9816
                add     ebx, [esp+14h]
9817
                rol     edi, 9
9818
                xor     ebp, edi
9819
                mov     [esp+14h], ebx
9820
                add     ecx, ebp
9821
                mov     [esp+4], ecx
9822
                mov     ecx, [esp+18h]
9823
                mov     ebp, ebx
9824
                mov     edi, ebx
9825
                ror     ebp, 6
9826
                rol     edi, 7
9827
                xor     edi, ebp
9828
                ror     ebp, 5
9829
                xor     edi, ebp
9830
                mov     ebp, ecx
9831
                xor     ebp, edx
9832
                and     ebp, ebx
9833
                lea     eax, [edi+eax-54E3A12Bh]
9834
                mov     edi, [esp+8]
9835
                xor     ebp, edx
9836
                add     eax, [esi+1Ch]
9837
                add     eax, ebp
9838
                mov     ebp, [esp+0Ch]
9839
                mov     ebx, edi
9840
                and     edi, ebp
9841
                or      ebx, ebp
9842
                mov     ebp, [esp+4]
9843
                and     ebx, ebp
9844
                ror     ebp, 2
9845
                or      ebx, edi
9846
                mov     edi, ebp
9847
                rol     edi, 0Ch
9848
                add     ebx, eax
9849
                xor     ebp, edi
9850
                add     eax, [esp+10h]
9851
                rol     edi, 9
9852
                xor     ebp, edi
9853
                mov     [esp+10h], eax
9854
                add     ebx, ebp
9855
                mov     [esp], ebx
9856
                mov     ebx, [esp+14h]
9857
                mov     ebp, eax
9858
                mov     edi, eax
9859
                ror     ebp, 6
9860
                rol     edi, 7
9861
                xor     edi, ebp
9862
                ror     ebp, 5
9863
                xor     edi, ebp
9864
                mov     ebp, ebx
9865
                xor     ebp, ecx
9866
                and     ebp, eax
9867
                lea     edx, [edi+edx-27F85568h]
9868
                mov     edi, [esp+4]
9869
                xor     ebp, ecx
9870
                add     edx, [esi+20h]
9871
                add     edx, ebp
9872
                mov     ebp, [esp+8]
9873
                mov     eax, edi
9874
                and     edi, ebp
9875
                or      eax, ebp
9876
                mov     ebp, [esp]
9877
                and     eax, ebp
9878
                ror     ebp, 2
9879
                or      eax, edi
9880
                mov     edi, ebp
9881
                rol     edi, 0Ch
9882
                add     eax, edx
9883
                xor     ebp, edi
9884
                add     edx, [esp+0Ch]
9885
                rol     edi, 9
9886
                xor     ebp, edi
9887
                mov     [esp+0Ch], edx
9888
                add     eax, ebp
9889
                mov     [esp+1Ch], eax
9890
                mov     eax, [esp+10h]
9891
                mov     ebp, edx
9892
                mov     edi, edx
9893
                ror     ebp, 6
9894
                rol     edi, 7
9895
                xor     edi, ebp
9896
                ror     ebp, 5
9897
                xor     edi, ebp
9898
                mov     ebp, eax
9899
                xor     ebp, ebx
9900
                and     ebp, edx
9901
                lea     ecx, [edi+ecx+12835B01h]
9902
                mov     edi, [esp]
9903
                xor     ebp, ebx
9904
                add     ecx, [esi+24h]
9905
                add     ecx, ebp
9906
                mov     ebp, [esp+4]
9907
                mov     edx, edi
9908
                and     edi, ebp
9909
                or      edx, ebp
9910
                mov     ebp, [esp+1Ch]
9911
                and     edx, ebp
9912
                ror     ebp, 2
9913
                or      edx, edi
9914
                mov     edi, ebp
9915
                rol     edi, 0Ch
9916
                add     edx, ecx
9917
                xor     ebp, edi
9918
                add     ecx, [esp+8]
9919
                rol     edi, 9
9920
                xor     ebp, edi
9921
                mov     [esp+8], ecx
9922
                add     edx, ebp
9923
                mov     [esp+18h], edx
9924
                mov     edx, [esp+0Ch]
9925
                mov     ebp, ecx
9926
                mov     edi, ecx
9927
                ror     ebp, 6
9928
                rol     edi, 7
9929
                xor     edi, ebp
9930
                ror     ebp, 5
9931
                xor     edi, ebp
9932
                mov     ebp, edx
9933
                xor     ebp, eax
9934
                and     ebp, ecx
9935
                lea     ebx, [edi+ebx+243185BEh]
9936
                mov     edi, [esp+1Ch]
9937
                xor     ebp, eax
9938
                add     ebx, [esi+28h]
9939
                add     ebx, ebp
9940
                mov     ebp, [esp]
9941
                mov     ecx, edi
9942
                and     edi, ebp
9943
                or      ecx, ebp
9944
                mov     ebp, [esp+18h]
9945
                and     ecx, ebp
9946
                ror     ebp, 2
9947
                or      ecx, edi
9948
                mov     edi, ebp
9949
                rol     edi, 0Ch
9950
                add     ecx, ebx
9951
                xor     ebp, edi
9952
                add     ebx, [esp+4]
9953
                rol     edi, 9
9954
                xor     ebp, edi
9955
                mov     [esp+4], ebx
9956
                add     ecx, ebp
9957
                mov     [esp+14h], ecx
9958
                mov     ecx, [esp+8]
9959
                mov     ebp, ebx
9960
                mov     edi, ebx
9961
                ror     ebp, 6
9962
                rol     edi, 7
9963
                xor     edi, ebp
9964
                ror     ebp, 5
9965
                xor     edi, ebp
9966
                mov     ebp, ecx
9967
                xor     ebp, edx
9968
                and     ebp, ebx
9969
                lea     eax, [edi+eax+550C7DC3h]
9970
                mov     edi, [esp+18h]
9971
                xor     ebp, edx
9972
                add     eax, [esi+2Ch]
9973
                add     eax, ebp
9974
                mov     ebp, [esp+1Ch]
9975
                mov     ebx, edi
9976
                and     edi, ebp
9977
                or      ebx, ebp
9978
                mov     ebp, [esp+14h]
9979
                and     ebx, ebp
9980
                ror     ebp, 2
9981
                or      ebx, edi
9982
                mov     edi, ebp
9983
                rol     edi, 0Ch
9984
                add     ebx, eax
9985
                xor     ebp, edi
9986
                add     eax, [esp]
9987
                rol     edi, 9
9988
                xor     ebp, edi
9989
                mov     [esp], eax
9990
                add     ebx, ebp
9991
                mov     [esp+10h], ebx
9992
                mov     ebx, [esp+4]
9993
                mov     ebp, eax
9994
                mov     edi, eax
9995
                ror     ebp, 6
9996
                rol     edi, 7
9997
                xor     edi, ebp
9998
                ror     ebp, 5
9999
                xor     edi, ebp
10000
                mov     ebp, ebx
10001
                xor     ebp, ecx
10002
                and     ebp, eax
10003
                lea     edx, [edi+edx+72BE5D74h]
10004
                mov     edi, [esp+14h]
10005
                xor     ebp, ecx
10006
                add     edx, [esi+30h]
10007
                add     edx, ebp
10008
                mov     ebp, [esp+18h]
10009
                mov     eax, edi
10010
                and     edi, ebp
10011
                or      eax, ebp
10012
                mov     ebp, [esp+10h]
10013
                and     eax, ebp
10014
                ror     ebp, 2
10015
                or      eax, edi
10016
                mov     edi, ebp
10017
                rol     edi, 0Ch
10018
                add     eax, edx
10019
                xor     ebp, edi
10020
                add     edx, [esp+1Ch]
10021
                rol     edi, 9
10022
                xor     ebp, edi
10023
                mov     [esp+1Ch], edx
10024
                add     eax, ebp
10025
                mov     [esp+0Ch], eax
10026
                mov     eax, [esp]
10027
                mov     ebp, edx
10028
                mov     edi, edx
10029
                ror     ebp, 6
10030
                rol     edi, 7
10031
                xor     edi, ebp
10032
                ror     ebp, 5
10033
                xor     edi, ebp
10034
                mov     ebp, eax
10035
                xor     ebp, ebx
10036
                and     ebp, edx
10037
                lea     ecx, [edi+ecx-7F214E02h]
10038
                mov     edi, [esp+10h]
10039
                xor     ebp, ebx
10040
                add     ecx, [esi+34h]
10041
                add     ecx, ebp
10042
                mov     ebp, [esp+14h]
10043
                mov     edx, edi
10044
                and     edi, ebp
10045
                or      edx, ebp
10046
                mov     ebp, [esp+0Ch]
10047
                and     edx, ebp
10048
                ror     ebp, 2
10049
                or      edx, edi
10050
                mov     edi, ebp
10051
                rol     edi, 0Ch
10052
                add     edx, ecx
10053
                xor     ebp, edi
10054
                add     ecx, [esp+18h]
10055
                rol     edi, 9
10056
                xor     ebp, edi
10057
                mov     [esp+18h], ecx
10058
                add     edx, ebp
10059
                mov     [esp+8], edx
10060
                mov     edx, [esp+1Ch]
10061
                mov     ebp, ecx
10062
                mov     edi, ecx
10063
                ror     ebp, 6
10064
                rol     edi, 7
10065
                xor     edi, ebp
10066
                ror     ebp, 5
10067
                xor     edi, ebp
10068
                mov     ebp, edx
10069
                xor     ebp, eax
10070
                and     ebp, ecx
10071
                lea     ebx, [edi+ebx-6423F959h]
10072
                mov     edi, [esp+0Ch]
10073
                xor     ebp, eax
10074
                add     ebx, [esi+38h]
10075
                add     ebx, ebp
10076
                mov     ebp, [esp+10h]
10077
                mov     ecx, edi
10078
                and     edi, ebp
10079
                or      ecx, ebp
10080
                mov     ebp, [esp+8]
10081
                and     ecx, ebp
10082
                ror     ebp, 2
10083
                or      ecx, edi
10084
                mov     edi, ebp
10085
                rol     edi, 0Ch
10086
                add     ecx, ebx
10087
                xor     ebp, edi
10088
                add     ebx, [esp+14h]
10089
                rol     edi, 9
10090
                xor     ebp, edi
10091
                mov     [esp+14h], ebx
10092
                add     ecx, ebp
10093
                mov     [esp+4], ecx
10094
                mov     ecx, [esp+18h]
10095
                mov     ebp, ebx
10096
                mov     edi, ebx
10097
                ror     ebp, 6
10098
                rol     edi, 7
10099
                xor     edi, ebp
10100
                ror     ebp, 5
10101
                xor     edi, ebp
10102
                mov     ebp, ecx
10103
                xor     ebp, edx
10104
                and     ebp, ebx
10105
                lea     eax, [edi+eax-3E640E8Ch]
10106
                mov     edi, [esp+8]
10107
                xor     ebp, edx
10108
                add     eax, [esi+3Ch]
10109
                add     eax, ebp
10110
                mov     ebp, [esp+0Ch]
10111
                mov     ebx, edi
10112
                and     edi, ebp
10113
                or      ebx, ebp
10114
                mov     ebp, [esp+4]
10115
                and     ebx, ebp
10116
                ror     ebp, 2
10117
                or      ebx, edi
10118
                mov     edi, ebp
10119
                rol     edi, 0Ch
10120
                add     ebx, eax
10121
                xor     ebp, edi
10122
                add     eax, [esp+10h]
10123
                rol     edi, 9
10124
                xor     ebp, edi
10125
                mov     [esp+10h], eax
10126
                add     ebx, ebp
10127
                mov     [esp], ebx
10128
                mov     ebx, [esp+14h]
10129
                mov     ebp, eax
10130
                mov     edi, eax
10131
                ror     ebp, 6
10132
                rol     edi, 7
10133
                xor     edi, ebp
10134
                ror     ebp, 5
10135
                xor     edi, ebp
10136
                mov     ebp, ebx
10137
                xor     ebp, ecx
10138
                and     ebp, eax
10139
                lea     edx, [edi+edx-1B64963Fh]
10140
                mov     edi, [esp+4]
10141
                xor     ebp, ecx
10142
                add     edx, [esi+40h]
10143
                add     edx, ebp
10144
                mov     ebp, [esp+8]
10145
                mov     eax, edi
10146
                and     edi, ebp
10147
                or      eax, ebp
10148
                mov     ebp, [esp]
10149
                and     eax, ebp
10150
                ror     ebp, 2
10151
                or      eax, edi
10152
                mov     edi, ebp
10153
                rol     edi, 0Ch
10154
                add     eax, edx
10155
                xor     ebp, edi
10156
                add     edx, [esp+0Ch]
10157
                rol     edi, 9
10158
                xor     ebp, edi
10159
                mov     [esp+0Ch], edx
10160
                add     eax, ebp
10161
                mov     [esp+1Ch], eax
10162
                mov     eax, [esp+10h]
10163
                mov     ebp, edx
10164
                mov     edi, edx
10165
                ror     ebp, 6
10166
                rol     edi, 7
10167
                xor     edi, ebp
10168
                ror     ebp, 5
10169
                xor     edi, ebp
10170
                mov     ebp, eax
10171
                xor     ebp, ebx
10172
                and     ebp, edx
10173
                lea     ecx, [edi+ecx-1041B87Ah]
10174
                mov     edi, [esp]
10175
                xor     ebp, ebx
10176
                add     ecx, [esi+44h]
10177
                add     ecx, ebp
10178
                mov     ebp, [esp+4]
10179
                mov     edx, edi
10180
                and     edi, ebp
10181
                or      edx, ebp
10182
                mov     ebp, [esp+1Ch]
10183
                and     edx, ebp
10184
                ror     ebp, 2
10185
                or      edx, edi
10186
                mov     edi, ebp
10187
                rol     edi, 0Ch
10188
                add     edx, ecx
10189
                xor     ebp, edi
10190
                add     ecx, [esp+8]
10191
                rol     edi, 9
10192
                xor     ebp, edi
10193
                mov     [esp+8], ecx
10194
                add     edx, ebp
10195
                mov     [esp+18h], edx
10196
                mov     edx, [esp+0Ch]
10197
                mov     ebp, ecx
10198
                mov     edi, ecx
10199
                ror     ebp, 6
10200
                rol     edi, 7
10201
                xor     edi, ebp
10202
                ror     ebp, 5
10203
                xor     edi, ebp
10204
                mov     ebp, edx
10205
                xor     ebp, eax
10206
                and     ebp, ecx
10207
                lea     ebx, [edi+ebx+0FC19DC6h]
10208
                mov     edi, [esp+1Ch]
10209
                xor     ebp, eax
10210
                add     ebx, [esi+48h]
10211
                add     ebx, ebp
10212
                mov     ebp, [esp]
10213
                mov     ecx, edi
10214
                and     edi, ebp
10215
                or      ecx, ebp
10216
                mov     ebp, [esp+18h]
10217
                and     ecx, ebp
10218
                ror     ebp, 2
10219
                or      ecx, edi
10220
                mov     edi, ebp
10221
                rol     edi, 0Ch
10222
                add     ecx, ebx
10223
                xor     ebp, edi
10224
                add     ebx, [esp+4]
10225
                rol     edi, 9
10226
                xor     ebp, edi
10227
                mov     [esp+4], ebx
10228
                add     ecx, ebp
10229
                mov     [esp+14h], ecx
10230
                mov     ecx, [esp+8]
10231
                mov     ebp, ebx
10232
                mov     edi, ebx
10233
                ror     ebp, 6
10234
                rol     edi, 7
10235
                xor     edi, ebp
10236
                ror     ebp, 5
10237
                xor     edi, ebp
10238
                mov     ebp, ecx
10239
                xor     ebp, edx
10240
                and     ebp, ebx
10241
                lea     eax, [edi+eax+240CA1CCh]
10242
                mov     edi, [esp+18h]
10243
                xor     ebp, edx
10244
                add     eax, [esi+4Ch]
10245
                add     eax, ebp
10246
                mov     ebp, [esp+1Ch]
10247
                mov     ebx, edi
10248
                and     edi, ebp
10249
                or      ebx, ebp
10250
                mov     ebp, [esp+14h]
10251
                and     ebx, ebp
10252
                ror     ebp, 2
10253
                or      ebx, edi
10254
                mov     edi, ebp
10255
                rol     edi, 0Ch
10256
                add     ebx, eax
10257
                xor     ebp, edi
10258
                add     eax, [esp]
10259
                rol     edi, 9
10260
                xor     ebp, edi
10261
                mov     [esp], eax
10262
                add     ebx, ebp
10263
                mov     [esp+10h], ebx
10264
                mov     ebx, [esp+4]
10265
                mov     ebp, eax
10266
                mov     edi, eax
10267
                ror     ebp, 6
10268
                rol     edi, 7
10269
                xor     edi, ebp
10270
                ror     ebp, 5
10271
                xor     edi, ebp
10272
                mov     ebp, ebx
10273
                xor     ebp, ecx
10274
                and     ebp, eax
10275
                lea     edx, [edi+edx+2DE92C6Fh]
10276
                mov     edi, [esp+14h]
10277
                xor     ebp, ecx
10278
                add     edx, [esi+50h]
10279
                add     edx, ebp
10280
                mov     ebp, [esp+18h]
10281
                mov     eax, edi
10282
                and     edi, ebp
10283
                or      eax, ebp
10284
                mov     ebp, [esp+10h]
10285
                and     eax, ebp
10286
                ror     ebp, 2
10287
                or      eax, edi
10288
                mov     edi, ebp
10289
                rol     edi, 0Ch
10290
                add     eax, edx
10291
                xor     ebp, edi
10292
                add     edx, [esp+1Ch]
10293
                rol     edi, 9
10294
                xor     ebp, edi
10295
                mov     [esp+1Ch], edx
10296
                add     eax, ebp
10297
                mov     [esp+0Ch], eax
10298
                mov     eax, [esp]
10299
                mov     ebp, edx
10300
                mov     edi, edx
10301
                ror     ebp, 6
10302
                rol     edi, 7
10303
                xor     edi, ebp
10304
                ror     ebp, 5
10305
                xor     edi, ebp
10306
                mov     ebp, eax
10307
                xor     ebp, ebx
10308
                and     ebp, edx
10309
                lea     ecx, [edi+ecx+4A7484AAh]
10310
                mov     edi, [esp+10h]
10311
                xor     ebp, ebx
10312
                add     ecx, [esi+54h]
10313
                add     ecx, ebp
10314
                mov     ebp, [esp+14h]
10315
                mov     edx, edi
10316
                and     edi, ebp
10317
                or      edx, ebp
10318
                mov     ebp, [esp+0Ch]
10319
                and     edx, ebp
10320
                ror     ebp, 2
10321
                or      edx, edi
10322
                mov     edi, ebp
10323
                rol     edi, 0Ch
10324
                add     edx, ecx
10325
                xor     ebp, edi
10326
                add     ecx, [esp+18h]
10327
                rol     edi, 9
10328
                xor     ebp, edi
10329
                mov     [esp+18h], ecx
10330
                add     edx, ebp
10331
                mov     [esp+8], edx
10332
                mov     edx, [esp+1Ch]
10333
                mov     ebp, ecx
10334
                mov     edi, ecx
10335
                ror     ebp, 6
10336
                rol     edi, 7
10337
                xor     edi, ebp
10338
                ror     ebp, 5
10339
                xor     edi, ebp
10340
                mov     ebp, edx
10341
                xor     ebp, eax
10342
                and     ebp, ecx
10343
                lea     ebx, [edi+ebx+5CB0A9DCh]
10344
                mov     edi, [esp+0Ch]
10345
                xor     ebp, eax
10346
                add     ebx, [esi+58h]
10347
                add     ebx, ebp
10348
                mov     ebp, [esp+10h]
10349
                mov     ecx, edi
10350
                and     edi, ebp
10351
                or      ecx, ebp
10352
                mov     ebp, [esp+8]
10353
                and     ecx, ebp
10354
                ror     ebp, 2
10355
                or      ecx, edi
10356
                mov     edi, ebp
10357
                rol     edi, 0Ch
10358
                add     ecx, ebx
10359
                xor     ebp, edi
10360
                add     ebx, [esp+14h]
10361
                rol     edi, 9
10362
                xor     ebp, edi
10363
                mov     [esp+14h], ebx
10364
                add     ecx, ebp
10365
                mov     [esp+4], ecx
10366
                mov     ecx, [esp+18h]
10367
                mov     ebp, ebx
10368
                mov     edi, ebx
10369
                ror     ebp, 6
10370
                rol     edi, 7
10371
                xor     edi, ebp
10372
                ror     ebp, 5
10373
                xor     edi, ebp
10374
                mov     ebp, ecx
10375
                xor     ebp, edx
10376
                and     ebp, ebx
10377
                lea     eax, [edi+eax+76F988DAh]
10378
                mov     edi, [esp+8]
10379
                xor     ebp, edx
10380
                add     eax, [esi+5Ch]
10381
                add     eax, ebp
10382
                mov     ebp, [esp+0Ch]
10383
                mov     ebx, edi
10384
                and     edi, ebp
10385
                or      ebx, ebp
10386
                mov     ebp, [esp+4]
10387
                and     ebx, ebp
10388
                ror     ebp, 2
10389
                or      ebx, edi
10390
                mov     edi, ebp
10391
                rol     edi, 0Ch
10392
                add     ebx, eax
10393
                xor     ebp, edi
10394
                add     eax, [esp+10h]
10395
                rol     edi, 9
10396
                xor     ebp, edi
10397
                mov     [esp+10h], eax
10398
                add     ebx, ebp
10399
                mov     [esp], ebx
10400
                mov     ebx, [esp+14h]
10401
                mov     ebp, eax
10402
                mov     edi, eax
10403
                ror     ebp, 6
10404
                rol     edi, 7
10405
                xor     edi, ebp
10406
                ror     ebp, 5
10407
                xor     edi, ebp
10408
                mov     ebp, ebx
10409
                xor     ebp, ecx
10410
                and     ebp, eax
10411
                lea     edx, [edi+edx-67C1AEAEh]
10412
                mov     edi, [esp+4]
10413
                xor     ebp, ecx
10414
                add     edx, [esi+60h]
10415
                add     edx, ebp
10416
                mov     ebp, [esp+8]
10417
                mov     eax, edi
10418
                and     edi, ebp
10419
                or      eax, ebp
10420
                mov     ebp, [esp]
10421
                and     eax, ebp
10422
                ror     ebp, 2
10423
                or      eax, edi
10424
                mov     edi, ebp
10425
                rol     edi, 0Ch
10426
                add     eax, edx
10427
                xor     ebp, edi
10428
                add     edx, [esp+0Ch]
10429
                rol     edi, 9
10430
                xor     ebp, edi
10431
                mov     [esp+0Ch], edx
10432
                add     eax, ebp
10433
                mov     [esp+1Ch], eax
10434
                mov     eax, [esp+10h]
10435
                mov     ebp, edx
10436
                mov     edi, edx
10437
                ror     ebp, 6
10438
                rol     edi, 7
10439
                xor     edi, ebp
10440
                ror     ebp, 5
10441
                xor     edi, ebp
10442
                mov     ebp, eax
10443
                xor     ebp, ebx
10444
                and     ebp, edx
10445
                lea     ecx, [edi+ecx-57CE3993h]
10446
                mov     edi, [esp]
10447
                xor     ebp, ebx
10448
                add     ecx, [esi+64h]
10449
                add     ecx, ebp
10450
                mov     ebp, [esp+4]
10451
                mov     edx, edi
10452
                and     edi, ebp
10453
                or      edx, ebp
10454
                mov     ebp, [esp+1Ch]
10455
                and     edx, ebp
10456
                ror     ebp, 2
10457
                or      edx, edi
10458
                mov     edi, ebp
10459
                rol     edi, 0Ch
10460
                add     edx, ecx
10461
                xor     ebp, edi
10462
                add     ecx, [esp+8]
10463
                rol     edi, 9
10464
                xor     ebp, edi
10465
                mov     [esp+8], ecx
10466
                add     edx, ebp
10467
                mov     [esp+18h], edx
10468
                mov     edx, [esp+0Ch]
10469
                mov     ebp, ecx
10470
                mov     edi, ecx
10471
                ror     ebp, 6
10472
                rol     edi, 7
10473
                xor     edi, ebp
10474
                ror     ebp, 5
10475
                xor     edi, ebp
10476
                mov     ebp, edx
10477
                xor     ebp, eax
10478
                and     ebp, ecx
10479
                lea     ebx, [edi+ebx-4FFCD838h]
10480
                mov     edi, [esp+1Ch]
10481
                xor     ebp, eax
10482
                add     ebx, [esi+68h]
10483
                add     ebx, ebp
10484
                mov     ebp, [esp]
10485
                mov     ecx, edi
10486
                and     edi, ebp
10487
                or      ecx, ebp
10488
                mov     ebp, [esp+18h]
10489
                and     ecx, ebp
10490
                ror     ebp, 2
10491
                or      ecx, edi
10492
                mov     edi, ebp
10493
                rol     edi, 0Ch
10494
                add     ecx, ebx
10495
                xor     ebp, edi
10496
                add     ebx, [esp+4]
10497
                rol     edi, 9
10498
                xor     ebp, edi
10499
                mov     [esp+4], ebx
10500
                add     ecx, ebp
10501
                mov     [esp+14h], ecx
10502
                mov     ecx, [esp+8]
10503
                mov     ebp, ebx
10504
                mov     edi, ebx
10505
                ror     ebp, 6
10506
                rol     edi, 7
10507
                xor     edi, ebp
10508
                ror     ebp, 5
10509
                xor     edi, ebp
10510
                mov     ebp, ecx
10511
                xor     ebp, edx
10512
                and     ebp, ebx
10513
                lea     eax, [edi+eax-40A68039h]
10514
                mov     edi, [esp+18h]
10515
                xor     ebp, edx
10516
                add     eax, [esi+6Ch]
10517
                add     eax, ebp
10518
                mov     ebp, [esp+1Ch]
10519
                mov     ebx, edi
10520
                and     edi, ebp
10521
                or      ebx, ebp
10522
                mov     ebp, [esp+14h]
10523
                and     ebx, ebp
10524
                ror     ebp, 2
10525
                or      ebx, edi
10526
                mov     edi, ebp
10527
                rol     edi, 0Ch
10528
                add     ebx, eax
10529
                xor     ebp, edi
10530
                add     eax, [esp]
10531
                rol     edi, 9
10532
                xor     ebp, edi
10533
                mov     [esp], eax
10534
                add     ebx, ebp
10535
                mov     [esp+10h], ebx
10536
                mov     ebx, [esp+4]
10537
                mov     ebp, eax
10538
                mov     edi, eax
10539
                ror     ebp, 6
10540
                rol     edi, 7
10541
                xor     edi, ebp
10542
                ror     ebp, 5
10543
                xor     edi, ebp
10544
                mov     ebp, ebx
10545
                xor     ebp, ecx
10546
                and     ebp, eax
10547
                lea     edx, [edi+edx-391FF40Dh]
10548
                mov     edi, [esp+14h]
10549
                xor     ebp, ecx
10550
                add     edx, [esi+70h]
10551
                add     edx, ebp
10552
                mov     ebp, [esp+18h]
10553
                mov     eax, edi
10554
                and     edi, ebp
10555
                or      eax, ebp
10556
                mov     ebp, [esp+10h]
10557
                and     eax, ebp
10558
                ror     ebp, 2
10559
                or      eax, edi
10560
                mov     edi, ebp
10561
                rol     edi, 0Ch
10562
                add     eax, edx
10563
                xor     ebp, edi
10564
                add     edx, [esp+1Ch]
10565
                rol     edi, 9
10566
                xor     ebp, edi
10567
                mov     [esp+1Ch], edx
10568
                add     eax, ebp
10569
                mov     [esp+0Ch], eax
10570
                mov     eax, [esp]
10571
                mov     ebp, edx
10572
                mov     edi, edx
10573
                ror     ebp, 6
10574
                rol     edi, 7
10575
                xor     edi, ebp
10576
                ror     ebp, 5
10577
                xor     edi, ebp
10578
                mov     ebp, eax
10579
                xor     ebp, ebx
10580
                and     ebp, edx
10581
                lea     ecx, [edi+ecx-2A586EB9h]
10582
                mov     edi, [esp+10h]
10583
                xor     ebp, ebx
10584
                add     ecx, [esi+74h]
10585
                add     ecx, ebp
10586
                mov     ebp, [esp+14h]
10587
                mov     edx, edi
10588
                and     edi, ebp
10589
                or      edx, ebp
10590
                mov     ebp, [esp+0Ch]
10591
                and     edx, ebp
10592
                ror     ebp, 2
10593
                or      edx, edi
10594
                mov     edi, ebp
10595
                rol     edi, 0Ch
10596
                add     edx, ecx
10597
                xor     ebp, edi
10598
                add     ecx, [esp+18h]
10599
                rol     edi, 9
10600
                xor     ebp, edi
10601
                mov     [esp+18h], ecx
10602
                add     edx, ebp
10603
                mov     [esp+8], edx
10604
                mov     edx, [esp+1Ch]
10605
                mov     ebp, ecx
10606
                mov     edi, ecx
10607
                ror     ebp, 6
10608
                rol     edi, 7
10609
                xor     edi, ebp
10610
                ror     ebp, 5
10611
                xor     edi, ebp
10612
                mov     ebp, edx
10613
                xor     ebp, eax
10614
                and     ebp, ecx
10615
                lea     ebx, [edi+ebx+6CA6351h]
10616
                mov     edi, [esp+0Ch]
10617
                xor     ebp, eax
10618
                add     ebx, [esi+78h]
10619
                add     ebx, ebp
10620
                mov     ebp, [esp+10h]
10621
                mov     ecx, edi
10622
                and     edi, ebp
10623
                or      ecx, ebp
10624
                mov     ebp, [esp+8]
10625
                and     ecx, ebp
10626
                ror     ebp, 2
10627
                or      ecx, edi
10628
                mov     edi, ebp
10629
                rol     edi, 0Ch
10630
                add     ecx, ebx
10631
                xor     ebp, edi
10632
                add     ebx, [esp+14h]
10633
                rol     edi, 9
10634
                xor     ebp, edi
10635
                mov     [esp+14h], ebx
10636
                add     ecx, ebp
10637
                mov     [esp+4], ecx
10638
                mov     ecx, [esp+18h]
10639
                mov     ebp, ebx
10640
                mov     edi, ebx
10641
                ror     ebp, 6
10642
                rol     edi, 7
10643
                xor     edi, ebp
10644
                ror     ebp, 5
10645
                xor     edi, ebp
10646
                mov     ebp, ecx
10647
                xor     ebp, edx
10648
                and     ebp, ebx
10649
                lea     eax, [edi+eax+14292967h]
10650
                mov     edi, [esp+8]
10651
                xor     ebp, edx
10652
                add     eax, [esi+7Ch]
10653
                add     eax, ebp
10654
                mov     ebp, [esp+0Ch]
10655
                mov     ebx, edi
10656
                and     edi, ebp
10657
                or      ebx, ebp
10658
                mov     ebp, [esp+4]
10659
                and     ebx, ebp
10660
                ror     ebp, 2
10661
                or      ebx, edi
10662
                mov     edi, ebp
10663
                rol     edi, 0Ch
10664
                add     ebx, eax
10665
                xor     ebp, edi
10666
                add     eax, [esp+10h]
10667
                rol     edi, 9
10668
                xor     ebp, edi
10669
                mov     [esp+10h], eax
10670
                add     ebx, ebp
10671
                mov     [esp], ebx
10672
                mov     ebx, [esp+14h]
10673
                mov     ebp, eax
10674
                mov     edi, eax
10675
                ror     ebp, 6
10676
                rol     edi, 7
10677
                xor     edi, ebp
10678
                ror     ebp, 5
10679
                xor     edi, ebp
10680
                mov     ebp, ebx
10681
                xor     ebp, ecx
10682
                and     ebp, eax
10683
                lea     edx, [edi+edx+27B70A85h]
10684
                mov     edi, [esp+4]
10685
                xor     ebp, ecx
10686
                add     edx, [esi+80h]
10687
                add     edx, ebp
10688
                mov     ebp, [esp+8]
10689
                mov     eax, edi
10690
                and     edi, ebp
10691
                or      eax, ebp
10692
                mov     ebp, [esp]
10693
                and     eax, ebp
10694
                ror     ebp, 2
10695
                or      eax, edi
10696
                mov     edi, ebp
10697
                rol     edi, 0Ch
10698
                add     eax, edx
10699
                xor     ebp, edi
10700
                add     edx, [esp+0Ch]
10701
                rol     edi, 9
10702
                xor     ebp, edi
10703
                mov     [esp+0Ch], edx
10704
                add     eax, ebp
10705
                mov     [esp+1Ch], eax
10706
                mov     eax, [esp+10h]
10707
                mov     ebp, edx
10708
                mov     edi, edx
10709
                ror     ebp, 6
10710
                rol     edi, 7
10711
                xor     edi, ebp
10712
                ror     ebp, 5
10713
                xor     edi, ebp
10714
                mov     ebp, eax
10715
                xor     ebp, ebx
10716
                and     ebp, edx
10717
                lea     ecx, [edi+ecx+2E1B2138h]
10718
                mov     edi, [esp]
10719
                xor     ebp, ebx
10720
                add     ecx, [esi+84h]
10721
                add     ecx, ebp
10722
                mov     ebp, [esp+4]
10723
                mov     edx, edi
10724
                and     edi, ebp
10725
                or      edx, ebp
10726
                mov     ebp, [esp+1Ch]
10727
                and     edx, ebp
10728
                ror     ebp, 2
10729
                or      edx, edi
10730
                mov     edi, ebp
10731
                rol     edi, 0Ch
10732
                add     edx, ecx
10733
                xor     ebp, edi
10734
                add     ecx, [esp+8]
10735
                rol     edi, 9
10736
                xor     ebp, edi
10737
                mov     [esp+8], ecx
10738
                add     edx, ebp
10739
                mov     [esp+18h], edx
10740
                mov     edx, [esp+0Ch]
10741
                mov     ebp, ecx
10742
                mov     edi, ecx
10743
                ror     ebp, 6
10744
                rol     edi, 7
10745
                xor     edi, ebp
10746
                ror     ebp, 5
10747
                xor     edi, ebp
10748
                mov     ebp, edx
10749
                xor     ebp, eax
10750
                and     ebp, ecx
10751
                lea     ebx, [edi+ebx+4D2C6DFCh]
10752
                mov     edi, [esp+1Ch]
10753
                xor     ebp, eax
10754
                add     ebx, [esi+88h]
10755
                add     ebx, ebp
10756
                mov     ebp, [esp]
10757
                mov     ecx, edi
10758
                and     edi, ebp
10759
                or      ecx, ebp
10760
                mov     ebp, [esp+18h]
10761
                and     ecx, ebp
10762
                ror     ebp, 2
10763
                or      ecx, edi
10764
                mov     edi, ebp
10765
                rol     edi, 0Ch
10766
                add     ecx, ebx
10767
                xor     ebp, edi
10768
                add     ebx, [esp+4]
10769
                rol     edi, 9
10770
                xor     ebp, edi
10771
                mov     [esp+4], ebx
10772
                add     ecx, ebp
10773
                mov     [esp+14h], ecx
10774
                mov     ecx, [esp+8]
10775
                mov     ebp, ebx
10776
                mov     edi, ebx
10777
                ror     ebp, 6
10778
                rol     edi, 7
10779
                xor     edi, ebp
10780
                ror     ebp, 5
10781
                xor     edi, ebp
10782
                mov     ebp, ecx
10783
                xor     ebp, edx
10784
                and     ebp, ebx
10785
                lea     eax, [edi+eax+53380D13h]
10786
                mov     edi, [esp+18h]
10787
                xor     ebp, edx
10788
                add     eax, [esi+8Ch]
10789
                add     eax, ebp
10790
                mov     ebp, [esp+1Ch]
10791
                mov     ebx, edi
10792
                and     edi, ebp
10793
                or      ebx, ebp
10794
                mov     ebp, [esp+14h]
10795
                and     ebx, ebp
10796
                ror     ebp, 2
10797
                or      ebx, edi
10798
                mov     edi, ebp
10799
                rol     edi, 0Ch
10800
                add     ebx, eax
10801
                xor     ebp, edi
10802
                add     eax, [esp]
10803
                rol     edi, 9
10804
                xor     ebp, edi
10805
                mov     [esp], eax
10806
                add     ebx, ebp
10807
                mov     [esp+10h], ebx
10808
                mov     ebx, [esp+4]
10809
                mov     ebp, eax
10810
                mov     edi, eax
10811
                ror     ebp, 6
10812
                rol     edi, 7
10813
                xor     edi, ebp
10814
                ror     ebp, 5
10815
                xor     edi, ebp
10816
                mov     ebp, ebx
10817
                xor     ebp, ecx
10818
                and     ebp, eax
10819
                lea     edx, [edi+edx+650A7354h]
10820
                mov     edi, [esp+14h]
10821
                xor     ebp, ecx
10822
                add     edx, [esi+90h]
10823
                add     edx, ebp
10824
                mov     ebp, [esp+18h]
10825
                mov     eax, edi
10826
                and     edi, ebp
10827
                or      eax, ebp
10828
                mov     ebp, [esp+10h]
10829
                and     eax, ebp
10830
                ror     ebp, 2
10831
                or      eax, edi
10832
                mov     edi, ebp
10833
                rol     edi, 0Ch
10834
                add     eax, edx
10835
                xor     ebp, edi
10836
                add     edx, [esp+1Ch]
10837
                rol     edi, 9
10838
                xor     ebp, edi
10839
                mov     [esp+1Ch], edx
10840
                add     eax, ebp
10841
                mov     [esp+0Ch], eax
10842
                mov     eax, [esp]
10843
                mov     ebp, edx
10844
                mov     edi, edx
10845
                ror     ebp, 6
10846
                rol     edi, 7
10847
                xor     edi, ebp
10848
                ror     ebp, 5
10849
                xor     edi, ebp
10850
                mov     ebp, eax
10851
                xor     ebp, ebx
10852
                and     ebp, edx
10853
                lea     ecx, [edi+ecx+766A0ABBh]
10854
                mov     edi, [esp+10h]
10855
                xor     ebp, ebx
10856
                add     ecx, [esi+94h]
10857
                add     ecx, ebp
10858
                mov     ebp, [esp+14h]
10859
                mov     edx, edi
10860
                and     edi, ebp
10861
                or      edx, ebp
10862
                mov     ebp, [esp+0Ch]
10863
                and     edx, ebp
10864
                ror     ebp, 2
10865
                or      edx, edi
10866
                mov     edi, ebp
10867
                rol     edi, 0Ch
10868
                add     edx, ecx
10869
                xor     ebp, edi
10870
                add     ecx, [esp+18h]
10871
                rol     edi, 9
10872
                xor     ebp, edi
10873
                mov     [esp+18h], ecx
10874
                add     edx, ebp
10875
                mov     [esp+8], edx
10876
                mov     edx, [esp+1Ch]
10877
                mov     ebp, ecx
10878
                mov     edi, ecx
10879
                ror     ebp, 6
10880
                rol     edi, 7
10881
                xor     edi, ebp
10882
                ror     ebp, 5
10883
                xor     edi, ebp
10884
                mov     ebp, edx
10885
                xor     ebp, eax
10886
                and     ebp, ecx
10887
                lea     ebx, [edi+ebx-7E3D36D2h]
10888
                mov     edi, [esp+0Ch]
10889
                xor     ebp, eax
10890
                add     ebx, [esi+98h]
10891
                add     ebx, ebp
10892
                mov     ebp, [esp+10h]
10893
                mov     ecx, edi
10894
                and     edi, ebp
10895
                or      ecx, ebp
10896
                mov     ebp, [esp+8]
10897
                and     ecx, ebp
10898
                ror     ebp, 2
10899
                or      ecx, edi
10900
                mov     edi, ebp
10901
                rol     edi, 0Ch
10902
                add     ecx, ebx
10903
                xor     ebp, edi
10904
                add     ebx, [esp+14h]
10905
                rol     edi, 9
10906
                xor     ebp, edi
10907
                mov     [esp+14h], ebx
10908
                add     ecx, ebp
10909
                mov     [esp+4], ecx
10910
                mov     ecx, [esp+18h]
10911
                mov     ebp, ebx
10912
                mov     edi, ebx
10913
                ror     ebp, 6
10914
                rol     edi, 7
10915
                xor     edi, ebp
10916
                ror     ebp, 5
10917
                xor     edi, ebp
10918
                mov     ebp, ecx
10919
                xor     ebp, edx
10920
                and     ebp, ebx
10921
                lea     eax, [edi+eax-6D8DD37Bh]
10922
                mov     edi, [esp+8]
10923
                xor     ebp, edx
10924
                add     eax, [esi+9Ch]
10925
                add     eax, ebp
10926
                mov     ebp, [esp+0Ch]
10927
                mov     ebx, edi
10928
                and     edi, ebp
10929
                or      ebx, ebp
10930
                mov     ebp, [esp+4]
10931
                and     ebx, ebp
10932
                ror     ebp, 2
10933
                or      ebx, edi
10934
                mov     edi, ebp
10935
                rol     edi, 0Ch
10936
                add     ebx, eax
10937
                xor     ebp, edi
10938
                add     eax, [esp+10h]
10939
                rol     edi, 9
10940
                xor     ebp, edi
10941
                mov     [esp+10h], eax
10942
                add     ebx, ebp
10943
                mov     [esp], ebx
10944
                mov     ebx, [esp+14h]
10945
                mov     ebp, eax
10946
                mov     edi, eax
10947
                ror     ebp, 6
10948
                rol     edi, 7
10949
                xor     edi, ebp
10950
                ror     ebp, 5
10951
                xor     edi, ebp
10952
                mov     ebp, ebx
10953
                xor     ebp, ecx
10954
                and     ebp, eax
10955
                lea     edx, [edi+edx-5D40175Fh]
10956
                mov     edi, [esp+4]
10957
                xor     ebp, ecx
10958
                add     edx, [esi+0A0h]
10959
                add     edx, ebp
10960
                mov     ebp, [esp+8]
10961
                mov     eax, edi
10962
                and     edi, ebp
10963
                or      eax, ebp
10964
                mov     ebp, [esp]
10965
                and     eax, ebp
10966
                ror     ebp, 2
10967
                or      eax, edi
10968
                mov     edi, ebp
10969
                rol     edi, 0Ch
10970
                add     eax, edx
10971
                xor     ebp, edi
10972
                add     edx, [esp+0Ch]
10973
                rol     edi, 9
10974
                xor     ebp, edi
10975
                mov     [esp+0Ch], edx
10976
                add     eax, ebp
10977
                mov     [esp+1Ch], eax
10978
                mov     eax, [esp+10h]
10979
                mov     ebp, edx
10980
                mov     edi, edx
10981
                ror     ebp, 6
10982
                rol     edi, 7
10983
                xor     edi, ebp
10984
                ror     ebp, 5
10985
                xor     edi, ebp
10986
                mov     ebp, eax
10987
                xor     ebp, ebx
10988
                and     ebp, edx
10989
                lea     ecx, [edi+ecx-57E599B5h]
10990
                mov     edi, [esp]
10991
                xor     ebp, ebx
10992
                add     ecx, [esi+0A4h]
10993
                add     ecx, ebp
10994
                mov     ebp, [esp+4]
10995
                mov     edx, edi
10996
                and     edi, ebp
10997
                or      edx, ebp
10998
                mov     ebp, [esp+1Ch]
10999
                and     edx, ebp
11000
                ror     ebp, 2
11001
                or      edx, edi
11002
                mov     edi, ebp
11003
                rol     edi, 0Ch
11004
                add     edx, ecx
11005
                xor     ebp, edi
11006
                add     ecx, [esp+8]
11007
                rol     edi, 9
11008
                xor     ebp, edi
11009
                mov     [esp+8], ecx
11010
                add     edx, ebp
11011
                mov     [esp+18h], edx
11012
                mov     edx, [esp+0Ch]
11013
                mov     ebp, ecx
11014
                mov     edi, ecx
11015
                ror     ebp, 6
11016
                rol     edi, 7
11017
                xor     edi, ebp
11018
                ror     ebp, 5
11019
                xor     edi, ebp
11020
                mov     ebp, edx
11021
                xor     ebp, eax
11022
                and     ebp, ecx
11023
                lea     ebx, [edi+ebx-3DB47490h]
11024
                mov     edi, [esp+1Ch]
11025
                xor     ebp, eax
11026
                add     ebx, [esi+0A8h]
11027
                add     ebx, ebp
11028
                mov     ebp, [esp]
11029
                mov     ecx, edi
11030
                and     edi, ebp
11031
                or      ecx, ebp
11032
                mov     ebp, [esp+18h]
11033
                and     ecx, ebp
11034
                ror     ebp, 2
11035
                or      ecx, edi
11036
                mov     edi, ebp
11037
                rol     edi, 0Ch
11038
                add     ecx, ebx
11039
                xor     ebp, edi
11040
                add     ebx, [esp+4]
11041
                rol     edi, 9
11042
                xor     ebp, edi
11043
                mov     [esp+4], ebx
11044
                add     ecx, ebp
11045
                mov     [esp+14h], ecx
11046
                mov     ecx, [esp+8]
11047
                mov     ebp, ebx
11048
                mov     edi, ebx
11049
                ror     ebp, 6
11050
                rol     edi, 7
11051
                xor     edi, ebp
11052
                ror     ebp, 5
11053
                xor     edi, ebp
11054
                mov     ebp, ecx
11055
                xor     ebp, edx
11056
                and     ebp, ebx
11057
                lea     eax, [edi+eax-3893AE5Dh]
11058
                mov     edi, [esp+18h]
11059
                xor     ebp, edx
11060
                add     eax, [esi+0ACh]
11061
                add     eax, ebp
11062
                mov     ebp, [esp+1Ch]
11063
                mov     ebx, edi
11064
                and     edi, ebp
11065
                or      ebx, ebp
11066
                mov     ebp, [esp+14h]
11067
                and     ebx, ebp
11068
                ror     ebp, 2
11069
                or      ebx, edi
11070
                mov     edi, ebp
11071
                rol     edi, 0Ch
11072
                add     ebx, eax
11073
                xor     ebp, edi
11074
                add     eax, [esp]
11075
                rol     edi, 9
11076
                xor     ebp, edi
11077
                mov     [esp], eax
11078
                add     ebx, ebp
11079
                mov     [esp+10h], ebx
11080
                mov     ebx, [esp+4]
11081
                mov     ebp, eax
11082
                mov     edi, eax
11083
                ror     ebp, 6
11084
                rol     edi, 7
11085
                xor     edi, ebp
11086
                ror     ebp, 5
11087
                xor     edi, ebp
11088
                mov     ebp, ebx
11089
                xor     ebp, ecx
11090
                and     ebp, eax
11091
                lea     edx, [edi+edx-2E6D17E7h]
11092
                mov     edi, [esp+14h]
11093
                xor     ebp, ecx
11094
                add     edx, [esi+0B0h]
11095
                add     edx, ebp
11096
                mov     ebp, [esp+18h]
11097
                mov     eax, edi
11098
                and     edi, ebp
11099
                or      eax, ebp
11100
                mov     ebp, [esp+10h]
11101
                and     eax, ebp
11102
                ror     ebp, 2
11103
                or      eax, edi
11104
                mov     edi, ebp
11105
                rol     edi, 0Ch
11106
                add     eax, edx
11107
                xor     ebp, edi
11108
                add     edx, [esp+1Ch]
11109
                rol     edi, 9
11110
                xor     ebp, edi
11111
                mov     [esp+1Ch], edx
11112
                add     eax, ebp
11113
                mov     [esp+0Ch], eax
11114
                mov     eax, [esp]
11115
                mov     ebp, edx
11116
                mov     edi, edx
11117
                ror     ebp, 6
11118
                rol     edi, 7
11119
                xor     edi, ebp
11120
                ror     ebp, 5
11121
                xor     edi, ebp
11122
                mov     ebp, eax
11123
                xor     ebp, ebx
11124
                and     ebp, edx
11125
                lea     ecx, [edi+ecx-2966F9DCh]
11126
                mov     edi, [esp+10h]
11127
                xor     ebp, ebx
11128
                add     ecx, [esi+0B4h]
11129
                add     ecx, ebp
11130
                mov     ebp, [esp+14h]
11131
                mov     edx, edi
11132
                and     edi, ebp
11133
                or      edx, ebp
11134
                mov     ebp, [esp+0Ch]
11135
                and     edx, ebp
11136
                ror     ebp, 2
11137
                or      edx, edi
11138
                mov     edi, ebp
11139
                rol     edi, 0Ch
11140
                add     edx, ecx
11141
                xor     ebp, edi
11142
                add     ecx, [esp+18h]
11143
                rol     edi, 9
11144
                xor     ebp, edi
11145
                mov     [esp+18h], ecx
11146
                add     edx, ebp
11147
                mov     [esp+8], edx
11148
                mov     edx, [esp+1Ch]
11149
                mov     ebp, ecx
11150
                mov     edi, ecx
11151
                ror     ebp, 6
11152
                rol     edi, 7
11153
                xor     edi, ebp
11154
                ror     ebp, 5
11155
                xor     edi, ebp
11156
                mov     ebp, edx
11157
                xor     ebp, eax
11158
                and     ebp, ecx
11159
                lea     ebx, [edi+ebx-0BF1CA7Bh]
11160
                mov     edi, [esp+0Ch]
11161
                xor     ebp, eax
11162
                add     ebx, [esi+0B8h]
11163
                add     ebx, ebp
11164
                mov     ebp, [esp+10h]
11165
                mov     ecx, edi
11166
                and     edi, ebp
11167
                or      ecx, ebp
11168
                mov     ebp, [esp+8]
11169
                and     ecx, ebp
11170
                ror     ebp, 2
11171
                or      ecx, edi
11172
                mov     edi, ebp
11173
                rol     edi, 0Ch
11174
                add     ecx, ebx
11175
                xor     ebp, edi
11176
                add     ebx, [esp+14h]
11177
                rol     edi, 9
11178
                xor     ebp, edi
11179
                mov     [esp+14h], ebx
11180
                add     ecx, ebp
11181
                mov     [esp+4], ecx
11182
                mov     ecx, [esp+18h]
11183
                mov     ebp, ebx
11184
                mov     edi, ebx
11185
                ror     ebp, 6
11186
                rol     edi, 7
11187
                xor     edi, ebp
11188
                ror     ebp, 5
11189
                xor     edi, ebp
11190
                mov     ebp, ecx
11191
                xor     ebp, edx
11192
                and     ebp, ebx
11193
                lea     eax, [edi+eax+106AA070h]
11194
                mov     edi, [esp+8]
11195
                xor     ebp, edx
11196
                add     eax, [esi+0BCh]
11197
                add     eax, ebp
11198
                mov     ebp, [esp+0Ch]
11199
                mov     ebx, edi
11200
                and     edi, ebp
11201
                or      ebx, ebp
11202
                mov     ebp, [esp+4]
11203
                and     ebx, ebp
11204
                ror     ebp, 2
11205
                or      ebx, edi
11206
                mov     edi, ebp
11207
                rol     edi, 0Ch
11208
                add     ebx, eax
11209
                xor     ebp, edi
11210
                add     eax, [esp+10h]
11211
                rol     edi, 9
11212
                xor     ebp, edi
11213
                mov     [esp+10h], eax
11214
                add     ebx, ebp
11215
                mov     [esp], ebx
11216
                mov     ebx, [esp+14h]
11217
                mov     ebp, eax
11218
                mov     edi, eax
11219
                ror     ebp, 6
11220
                rol     edi, 7
11221
                xor     edi, ebp
11222
                ror     ebp, 5
11223
                xor     edi, ebp
11224
                mov     ebp, ebx
11225
                xor     ebp, ecx
11226
                and     ebp, eax
11227
                lea     edx, [edi+edx+19A4C116h]
11228
                mov     edi, [esp+4]
11229
                xor     ebp, ecx
11230
                add     edx, [esi+0C0h]
11231
                add     edx, ebp
11232
                mov     ebp, [esp+8]
11233
                mov     eax, edi
11234
                and     edi, ebp
11235
                or      eax, ebp
11236
                mov     ebp, [esp]
11237
                and     eax, ebp
11238
                ror     ebp, 2
11239
                or      eax, edi
11240
                mov     edi, ebp
11241
                rol     edi, 0Ch
11242
                add     eax, edx
11243
                xor     ebp, edi
11244
                add     edx, [esp+0Ch]
11245
                rol     edi, 9
11246
                xor     ebp, edi
11247
                mov     [esp+0Ch], edx
11248
                add     eax, ebp
11249
                mov     [esp+1Ch], eax
11250
                mov     eax, [esp+10h]
11251
                mov     ebp, edx
11252
                mov     edi, edx
11253
                ror     ebp, 6
11254
                rol     edi, 7
11255
                xor     edi, ebp
11256
                ror     ebp, 5
11257
                xor     edi, ebp
11258
                mov     ebp, eax
11259
                xor     ebp, ebx
11260
                and     ebp, edx
11261
                lea     ecx, [edi+ecx+1E376C08h]
11262
                mov     edi, [esp]
11263
                xor     ebp, ebx
11264
                add     ecx, [esi+0C4h]
11265
                add     ecx, ebp
11266
                mov     ebp, [esp+4]
11267
                mov     edx, edi
11268
                and     edi, ebp
11269
                or      edx, ebp
11270
                mov     ebp, [esp+1Ch]
11271
                and     edx, ebp
11272
                ror     ebp, 2
11273
                or      edx, edi
11274
                mov     edi, ebp
11275
                rol     edi, 0Ch
11276
                add     edx, ecx
11277
                xor     ebp, edi
11278
                add     ecx, [esp+8]
11279
                rol     edi, 9
11280
                xor     ebp, edi
11281
                mov     [esp+8], ecx
11282
                add     edx, ebp
11283
                mov     [esp+18h], edx
11284
                mov     edx, [esp+0Ch]
11285
                mov     ebp, ecx
11286
                mov     edi, ecx
11287
                ror     ebp, 6
11288
                rol     edi, 7
11289
                xor     edi, ebp
11290
                ror     ebp, 5
11291
                xor     edi, ebp
11292
                mov     ebp, edx
11293
                xor     ebp, eax
11294
                and     ebp, ecx
11295
                lea     ebx, [edi+ebx+2748774Ch]
11296
                mov     edi, [esp+1Ch]
11297
                xor     ebp, eax
11298
                add     ebx, [esi+0C8h]
11299
                add     ebx, ebp
11300
                mov     ebp, [esp]
11301
                mov     ecx, edi
11302
                and     edi, ebp
11303
                or      ecx, ebp
11304
                mov     ebp, [esp+18h]
11305
                and     ecx, ebp
11306
                ror     ebp, 2
11307
                or      ecx, edi
11308
                mov     edi, ebp
11309
                rol     edi, 0Ch
11310
                add     ecx, ebx
11311
                xor     ebp, edi
11312
                add     ebx, [esp+4]
11313
                rol     edi, 9
11314
                xor     ebp, edi
11315
                mov     [esp+4], ebx
11316
                add     ecx, ebp
11317
                mov     [esp+14h], ecx
11318
                mov     ecx, [esp+8]
11319
                mov     ebp, ebx
11320
                mov     edi, ebx
11321
                ror     ebp, 6
11322
                rol     edi, 7
11323
                xor     edi, ebp
11324
                ror     ebp, 5
11325
                xor     edi, ebp
11326
                mov     ebp, ecx
11327
                xor     ebp, edx
11328
                and     ebp, ebx
11329
                lea     eax, [edi+eax+34B0BCB5h]
11330
                mov     edi, [esp+18h]
11331
                xor     ebp, edx
11332
                add     eax, [esi+0CCh]
11333
                add     eax, ebp
11334
                mov     ebp, [esp+1Ch]
11335
                mov     ebx, edi
11336
                and     edi, ebp
11337
                or      ebx, ebp
11338
                mov     ebp, [esp+14h]
11339
                and     ebx, ebp
11340
                ror     ebp, 2
11341
                or      ebx, edi
11342
                mov     edi, ebp
11343
                rol     edi, 0Ch
11344
                add     ebx, eax
11345
                xor     ebp, edi
11346
                add     eax, [esp]
11347
                rol     edi, 9
11348
                xor     ebp, edi
11349
                mov     [esp], eax
11350
                add     ebx, ebp
11351
                mov     [esp+10h], ebx
11352
                mov     ebx, [esp+4]
11353
                mov     ebp, eax
11354
                mov     edi, eax
11355
                ror     ebp, 6
11356
                rol     edi, 7
11357
                xor     edi, ebp
11358
                ror     ebp, 5
11359
                xor     edi, ebp
11360
                mov     ebp, ebx
11361
                xor     ebp, ecx
11362
                and     ebp, eax
11363
                lea     edx, [edi+edx+391C0CB3h]
11364
                mov     edi, [esp+14h]
11365
                xor     ebp, ecx
11366
                add     edx, [esi+0D0h]
11367
                add     edx, ebp
11368
                mov     ebp, [esp+18h]
11369
                mov     eax, edi
11370
                and     edi, ebp
11371
                or      eax, ebp
11372
                mov     ebp, [esp+10h]
11373
                and     eax, ebp
11374
                ror     ebp, 2
11375
                or      eax, edi
11376
                mov     edi, ebp
11377
                rol     edi, 0Ch
11378
                add     eax, edx
11379
                xor     ebp, edi
11380
                add     edx, [esp+1Ch]
11381
                rol     edi, 9
11382
                xor     ebp, edi
11383
                mov     [esp+1Ch], edx
11384
                add     eax, ebp
11385
                mov     [esp+0Ch], eax
11386
                mov     eax, [esp]
11387
                mov     ebp, edx
11388
                mov     edi, edx
11389
                ror     ebp, 6
11390
                rol     edi, 7
11391
                xor     edi, ebp
11392
                ror     ebp, 5
11393
                xor     edi, ebp
11394
                mov     ebp, eax
11395
                xor     ebp, ebx
11396
                and     ebp, edx
11397
                lea     ecx, [edi+ecx+4ED8AA4Ah]
11398
                mov     edi, [esp+10h]
11399
                xor     ebp, ebx
11400
                add     ecx, [esi+0D4h]
11401
                add     ecx, ebp
11402
                mov     ebp, [esp+14h]
11403
                mov     edx, edi
11404
                and     edi, ebp
11405
                or      edx, ebp
11406
                mov     ebp, [esp+0Ch]
11407
                and     edx, ebp
11408
                ror     ebp, 2
11409
                or      edx, edi
11410
                mov     edi, ebp
11411
                rol     edi, 0Ch
11412
                add     edx, ecx
11413
                xor     ebp, edi
11414
                add     ecx, [esp+18h]
11415
                rol     edi, 9
11416
                xor     ebp, edi
11417
                mov     [esp+18h], ecx
11418
                add     edx, ebp
11419
                mov     [esp+8], edx
11420
                mov     edx, [esp+1Ch]
11421
                mov     ebp, ecx
11422
                mov     edi, ecx
11423
                ror     ebp, 6
11424
                rol     edi, 7
11425
                xor     edi, ebp
11426
                ror     ebp, 5
11427
                xor     edi, ebp
11428
                mov     ebp, edx
11429
                xor     ebp, eax
11430
                and     ebp, ecx
11431
                lea     ebx, [edi+ebx+5B9CCA4Fh]
11432
                mov     edi, [esp+0Ch]
11433
                xor     ebp, eax
11434
                add     ebx, [esi+0D8h]
11435
                add     ebx, ebp
11436
                mov     ebp, [esp+10h]
11437
                mov     ecx, edi
11438
                and     edi, ebp
11439
                or      ecx, ebp
11440
                mov     ebp, [esp+8]
11441
                and     ecx, ebp
11442
                ror     ebp, 2
11443
                or      ecx, edi
11444
                mov     edi, ebp
11445
                rol     edi, 0Ch
11446
                add     ecx, ebx
11447
                xor     ebp, edi
11448
                add     ebx, [esp+14h]
11449
                rol     edi, 9
11450
                xor     ebp, edi
11451
                mov     [esp+14h], ebx
11452
                add     ecx, ebp
11453
                mov     [esp+4], ecx
11454
                mov     ecx, [esp+18h]
11455
                mov     ebp, ebx
11456
                mov     edi, ebx
11457
                ror     ebp, 6
11458
                rol     edi, 7
11459
                xor     edi, ebp
11460
                ror     ebp, 5
11461
                xor     edi, ebp
11462
                mov     ebp, ecx
11463
                xor     ebp, edx
11464
                and     ebp, ebx
11465
                lea     eax, [edi+eax+682E6FF3h]
11466
                mov     edi, [esp+8]
11467
                xor     ebp, edx
11468
                add     eax, [esi+0DCh]
11469
                add     eax, ebp
11470
                mov     ebp, [esp+0Ch]
11471
                mov     ebx, edi
11472
                and     edi, ebp
11473
                or      ebx, ebp
11474
                mov     ebp, [esp+4]
11475
                and     ebx, ebp
11476
                ror     ebp, 2
11477
                or      ebx, edi
11478
                mov     edi, ebp
11479
                rol     edi, 0Ch
11480
                add     ebx, eax
11481
                xor     ebp, edi
11482
                add     eax, [esp+10h]
11483
                rol     edi, 9
11484
                xor     ebp, edi
11485
                mov     [esp+10h], eax
11486
                add     ebx, ebp
11487
                mov     [esp], ebx
11488
                mov     ebx, [esp+14h]
11489
                mov     ebp, eax
11490
                mov     edi, eax
11491
                ror     ebp, 6
11492
                rol     edi, 7
11493
                xor     edi, ebp
11494
                ror     ebp, 5
11495
                xor     edi, ebp
11496
                mov     ebp, ebx
11497
                xor     ebp, ecx
11498
                and     ebp, eax
11499
                lea     edx, [edi+edx+748F82EEh]
11500
                mov     edi, [esp+4]
11501
                xor     ebp, ecx
11502
                add     edx, [esi+0E0h]
11503
                add     edx, ebp
11504
                mov     ebp, [esp+8]
11505
                mov     eax, edi
11506
                and     edi, ebp
11507
                or      eax, ebp
11508
                mov     ebp, [esp]
11509
                and     eax, ebp
11510
                ror     ebp, 2
11511
                or      eax, edi
11512
                mov     edi, ebp
11513
                rol     edi, 0Ch
11514
                add     eax, edx
11515
                xor     ebp, edi
11516
                add     edx, [esp+0Ch]
11517
                rol     edi, 9
11518
                xor     ebp, edi
11519
                mov     [esp+0Ch], edx
11520
                add     eax, ebp
11521
                mov     [esp+1Ch], eax
11522
                mov     eax, [esp+10h]
11523
                mov     ebp, edx
11524
                mov     edi, edx
11525
                ror     ebp, 6
11526
                rol     edi, 7
11527
                xor     edi, ebp
11528
                ror     ebp, 5
11529
                xor     edi, ebp
11530
                mov     ebp, eax
11531
                xor     ebp, ebx
11532
                and     ebp, edx
11533
                lea     ecx, [edi+ecx+78A5636Fh]
11534
                mov     edi, [esp]
11535
                xor     ebp, ebx
11536
                add     ecx, [esi+0E4h]
11537
                add     ecx, ebp
11538
                mov     ebp, [esp+4]
11539
                mov     edx, edi
11540
                and     edi, ebp
11541
                or      edx, ebp
11542
                mov     ebp, [esp+1Ch]
11543
                and     edx, ebp
11544
                ror     ebp, 2
11545
                or      edx, edi
11546
                mov     edi, ebp
11547
                rol     edi, 0Ch
11548
                add     edx, ecx
11549
                xor     ebp, edi
11550
                add     ecx, [esp+8]
11551
                rol     edi, 9
11552
                xor     ebp, edi
11553
                mov     [esp+8], ecx
11554
                add     edx, ebp
11555
                mov     [esp+18h], edx
11556
                mov     edx, [esp+0Ch]
11557
                mov     ebp, ecx
11558
                mov     edi, ecx
11559
                ror     ebp, 6
11560
                rol     edi, 7
11561
                xor     edi, ebp
11562
                ror     ebp, 5
11563
                xor     edi, ebp
11564
                mov     ebp, edx
11565
                xor     ebp, eax
11566
                and     ebp, ecx
11567
                lea     ebx, [edi+ebx-7B3787ECh]
11568
                mov     edi, [esp+1Ch]
11569
                xor     ebp, eax
11570
                add     ebx, [esi+0E8h]
11571
                add     ebx, ebp
11572
                mov     ebp, [esp]
11573
                mov     ecx, edi
11574
                and     edi, ebp
11575
                or      ecx, ebp
11576
                mov     ebp, [esp+18h]
11577
                and     ecx, ebp
11578
                ror     ebp, 2
11579
                or      ecx, edi
11580
                mov     edi, ebp
11581
                rol     edi, 0Ch
11582
                add     ecx, ebx
11583
                xor     ebp, edi
11584
                add     ebx, [esp+4]
11585
                rol     edi, 9
11586
                xor     ebp, edi
11587
                mov     [esp+4], ebx
11588
                add     ecx, ebp
11589
                mov     [esp+14h], ecx
11590
                mov     ecx, [esp+8]
11591
                mov     ebp, ebx
11592
                mov     edi, ebx
11593
                ror     ebp, 6
11594
                rol     edi, 7
11595
                xor     edi, ebp
11596
                ror     ebp, 5
11597
                xor     edi, ebp
11598
                mov     ebp, ecx
11599
                xor     ebp, edx
11600
                and     ebp, ebx
11601
                lea     eax, [edi+eax-7338FDF8h]
11602
                mov     edi, [esp+18h]
11603
                xor     ebp, edx
11604
                add     eax, [esi+0ECh]
11605
                add     eax, ebp
11606
                mov     ebp, [esp+1Ch]
11607
                mov     ebx, edi
11608
                and     edi, ebp
11609
                or      ebx, ebp
11610
                mov     ebp, [esp+14h]
11611
                and     ebx, ebp
11612
                ror     ebp, 2
11613
                or      ebx, edi
11614
                mov     edi, ebp
11615
                rol     edi, 0Ch
11616
                add     ebx, eax
11617
                xor     ebp, edi
11618
                add     eax, [esp]
11619
                rol     edi, 9
11620
                xor     ebp, edi
11621
                mov     [esp], eax
11622
                add     ebx, ebp
11623
                mov     [esp+10h], ebx
11624
                mov     ebx, [esp+4]
11625
                mov     ebp, eax
11626
                mov     edi, eax
11627
                ror     ebp, 6
11628
                rol     edi, 7
11629
                xor     edi, ebp
11630
                ror     ebp, 5
11631
                xor     edi, ebp
11632
                mov     ebp, ebx
11633
                xor     ebp, ecx
11634
                and     ebp, eax
11635
                lea     edx, [edi+edx-6F410006h]
11636
                mov     edi, [esp+14h]
11637
                xor     ebp, ecx
11638
                add     edx, [esi+0F0h]
11639
                add     edx, ebp
11640
                mov     ebp, [esp+18h]
11641
                mov     eax, edi
11642
                and     edi, ebp
11643
                or      eax, ebp
11644
                mov     ebp, [esp+10h]
11645
                and     eax, ebp
11646
                ror     ebp, 2
11647
                or      eax, edi
11648
                mov     edi, ebp
11649
                rol     edi, 0Ch
11650
                add     eax, edx
11651
                xor     ebp, edi
11652
                add     edx, [esp+1Ch]
11653
                rol     edi, 9
11654
                xor     ebp, edi
11655
                mov     [esp+1Ch], edx
11656
                add     eax, ebp
11657
                mov     [esp+0Ch], eax
11658
                mov     eax, [esp]
11659
                mov     ebp, edx
11660
                mov     edi, edx
11661
                ror     ebp, 6
11662
                rol     edi, 7
11663
                xor     edi, ebp
11664
                ror     ebp, 5
11665
                xor     edi, ebp
11666
                mov     ebp, eax
11667
                xor     ebp, ebx
11668
                and     ebp, edx
11669
                lea     ecx, [edi+ecx-5BAF9315h]
11670
                mov     edi, [esp+10h]
11671
                xor     ebp, ebx
11672
                add     ecx, [esi+0F4h]
11673
                add     ecx, ebp
11674
                mov     ebp, [esp+14h]
11675
                mov     edx, edi
11676
                and     edi, ebp
11677
                or      edx, ebp
11678
                mov     ebp, [esp+0Ch]
11679
                and     edx, ebp
11680
                ror     ebp, 2
11681
                or      edx, edi
11682
                mov     edi, ebp
11683
                rol     edi, 0Ch
11684
                add     edx, ecx
11685
                xor     ebp, edi
11686
                add     ecx, [esp+18h]
11687
                rol     edi, 9
11688
                xor     ebp, edi
11689
                mov     [esp+18h], ecx
11690
                add     edx, ebp
11691
                mov     [esp+8], edx
11692
                mov     edx, [esp+1Ch]
11693
                mov     ebp, ecx
11694
                mov     edi, ecx
11695
                ror     ebp, 6
11696
                rol     edi, 7
11697
                xor     edi, ebp
11698
                ror     ebp, 5
11699
                xor     edi, ebp
11700
                mov     ebp, edx
11701
                xor     ebp, eax
11702
                and     ebp, ecx
11703
                lea     ebx, [edi+ebx-41065C09h]
11704
                mov     edi, [esp+0Ch]
11705
                xor     ebp, eax
11706
                add     ebx, [esi+0F8h]
11707
                add     ebx, ebp
11708
                mov     ebp, [esp+10h]
11709
                mov     ecx, edi
11710
                and     edi, ebp
11711
                or      ecx, ebp
11712
                mov     ebp, [esp+8]
11713
                and     ecx, ebp
11714
                ror     ebp, 2
11715
                or      ecx, edi
11716
                mov     edi, ebp
11717
                rol     edi, 0Ch
11718
                add     ecx, ebx
11719
                xor     ebp, edi
11720
                add     ebx, [esp+14h]
11721
                rol     edi, 9
11722
                xor     ebp, edi
11723
                mov     [esp+14h], ebx
11724
                add     ecx, ebp
11725
                mov     [esp+4], ecx
11726
                mov     ecx, [esp+18h]
11727
                mov     ebp, ebx
11728
                mov     edi, ebx
11729
                ror     ebp, 6
11730
                rol     edi, 7
11731
                xor     edi, ebp
11732
                ror     ebp, 5
11733
                xor     edi, ebp
11734
                mov     ebp, ecx
11735
                xor     ebp, edx
11736
                and     ebp, ebx
11737
                lea     eax, [edi+eax-398E870Eh]
11738
                mov     edi, [esp+8]
11739
                xor     ebp, edx
11740
                add     eax, [esi+0FCh]
11741
                add     eax, ebp
11742
                mov     ebp, [esp+0Ch]
11743
                mov     ebx, edi
11744
                and     edi, ebp
11745
                or      ebx, ebp
11746
                mov     ebp, [esp+4]
11747
                and     ebx, ebp
11748
                ror     ebp, 2
11749
                or      ebx, edi
11750
                mov     edi, ebp
11751
                rol     edi, 0Ch
11752
                add     ebx, eax
11753
                xor     ebp, edi
11754
                add     eax, [esp+10h]
11755
                rol     edi, 9
11756
                xor     ebp, edi
11757
                mov     [esp+10h], eax
11758
                add     ebx, ebp
11759
                mov     [esp], ebx
11760
                mov     ebx, [esp+14h]
11761
                mov     edi, [esp+24h]
11762
                add     [edi+10h], eax
11763
                add     [edi+14h], ebx
11764
                add     [edi+18h], ecx
11765
                add     [edi+1Ch], edx
11766
                mov     eax, [esp]
11767
                mov     ebx, [esp+4]
11768
                mov     ecx, [esp+8]
11769
                mov     edx, [esp+0Ch]
11770
                mov     ebp, [esp+28h]
11771
                add     [edi], eax
11772
                add     [edi+4], ebx
11773
                mov     esp, ebp
11774
                add     [edi+8], ecx
11775
                add     [edi+0Ch], edx
11776
                pop     ebp
11777
                pop     edi
11778
                pop     esi
11779
                pop     ebx
11780
  end;
11781
end;
11782
{$ENDIF}
11783
11784
{$IFDEF THash_SHA384_asm}
11785
procedure SHA384Buffer(S, D: Pointer);
11786
asm
11787
                push ebx
11788
                push edi
11789
                mov  edi, eax
11790
                push esi
11791
                mov  esi, edx
11792
11793
                mov     eax, [esi]
11794
                mov     ebx, [esi+4]
11795
                bswap   eax
11796
                bswap   ebx
11797
                mov     ecx, [esi+8]
11798
                mov     edx, [esi+0Ch]
11799
                bswap   ecx
11800
                bswap   edx
11801
                mov     [edi], ebx
11802
                mov     [edi+4], eax
11803
                mov     [edi+8], edx
11804
                mov     [edi+0Ch], ecx
11805
                mov     eax, [esi+10h]
11806
                mov     ebx, [esi+14h]
11807
                bswap   eax
11808
                bswap   ebx
11809
                mov     ecx, [esi+18h]
11810
                mov     edx, [esi+1Ch]
11811
                bswap   ecx
11812
                bswap   edx
11813
                mov     [edi+10h], ebx
11814
                mov     [edi+14h], eax
11815
                mov     [edi+18h], edx
11816
                mov     [edi+1Ch], ecx
11817
                mov     eax, [esi+20h]
11818
                mov     ebx, [esi+24h]
11819
                bswap   eax
11820
                bswap   ebx
11821
                mov     ecx, [esi+28h]
11822
                mov     edx, [esi+2Ch]
11823
                bswap   ecx
11824
                bswap   edx
11825
                mov     [edi+20h], ebx
11826
                mov     [edi+24h], eax
11827
                mov     [edi+28h], edx
11828
                mov     [edi+2Ch], ecx
11829
                mov     eax, [esi+30h]
11830
                mov     ebx, [esi+34h]
11831
                bswap   eax
11832
                bswap   ebx
11833
                mov     ecx, [esi+38h]
11834
                mov     edx, [esi+3Ch]
11835
                bswap   ecx
11836
                bswap   edx
11837
                mov     [edi+30h], ebx
11838
                mov     [edi+34h], eax
11839
                mov     [edi+38h], edx
11840
                mov     [edi+3Ch], ecx
11841
11842
                pop  esi
11843
                pop  edi
11844
                pop  ebx
11845
end;
11846
11847
procedure THash_SHA384.DoTransform(Buffer: PUInt32Array);
11848
var
11849
  W: array [0..159] of LongWord;
11850
begin
11851
  // swap first 16 uint64
11852
  SHA384Buffer(@W[0],  @Buffer[0]);
11853
  SHA384Buffer(Pointer(LongInt(@W[0]) + 16*4), Pointer(LongInt(@Buffer[0]) + 16*4));
11854
  asm
11855
                push    ebx
11856
                push    esi
11857
                push    edi
11858
                push    ebp
11859
11860
                mov     eax, Self
11861
                lea     edi, [eax].THash_SHA512.FDigest
11862
                lea     esi, W
11863
                lea     ebp, SHA_512K
11864
11865
                sub     esp, 60h
11866
                mov     [esp+54h], ebp
11867
                mov     [esp+5Ch], edi
11868
                mov     [esp+58h], esi
11869
                mov     dword ptr [esp+50h], 10h
11870
11871
            @@buffexpand_loop:
11872
                mov     ebp, [esi+8]
11873
                mov     eax, [esi+0Ch]
11874
                mov     ecx, ebp
11875
                mov     edi, eax
11876
                shl     eax, 18h
11877
                mov     edx, edi
11878
                shr     ecx, 1
11879
                mov     ebx, eax
11880
                shl     edx, 1Fh
11881
                shl     ebx, 1
11882
                or      edx, ecx
11883
                shr     ecx, 6
11884
                or      ebx, ecx
11885
                shr     ecx, 1
11886
                xor     edx, ebx
11887
                shl     ebp, 18h
11888
                or      eax, ecx
11889
                shr     edi, 1
11890
                mov     ecx, ebp
11891
                shl     ecx, 7
11892
                or      ecx, edi
11893
                shr     edi, 6
11894
                xor     edx, eax
11895
                xor     ecx, edi
11896
                mov     [esp+40h], edx
11897
                shr     edi, 1
11898
                or      ebp, edi
11899
                xor     ecx, ebp
11900
                mov     ebp, [esi+70h]
11901
                mov     edi, [esi+74h]
11902
                mov     [esp+44h], ecx
11903
                mov     ecx, ebp
11904
                mov     edx, edi
11905
                shl     ecx, 3
11906
                mov     eax, ebp
11907
                shr     edx, 1Dh
11908
                mov     ebx, edi
11909
                shr     eax, 6
11910
                or      edx, ecx
11911
                shl     ebx, 1Ah
11912
                or      eax, ebx
11913
                mov     ebx, edi
11914
                xor     edx, eax
11915
                shr     eax, 0Dh
11916
                mov     ecx, ebp
11917
                shl     ebx, 0Dh
11918
                or      eax, ebx
11919
                shr     ecx, 1Dh
11920
                xor     eax, edx
11921
                mov     edx, edi
11922
                shl     edx, 3
11923
                shr     edi, 6
11924
                or      edx, ecx
11925
                xor     edx, edi
11926
                shr     edi, 0Dh
11927
                mov     ecx, eax
11928
                shl     ebp, 0Dh
11929
                mov     eax, [esp+40h]
11930
                or      edi, ebp
11931
                mov     ebx, [esp+44h]
11932
                xor     edx, edi
11933
                mov     ebp, [esi]
11934
                mov     edi, [esi+4]
11935
                add     eax, ecx
11936
                adc     ebx, edx
11937
                add     eax, ebp
11938
                adc     ebx, edi
11939
                mov     ebp, [esi+48h]
11940
                mov     edi, [esi+4Ch]
11941
                add     eax, ebp
11942
                adc     ebx, edi
11943
                mov     [esi+80h], eax
11944
                mov     [esi+84h], ebx
11945
                mov     ebp, [esi+10h]
11946
                mov     eax, [esi+14h]
11947
                mov     ecx, ebp
11948
                mov     edi, eax
11949
                shl     eax, 18h
11950
                mov     edx, edi
11951
                shr     ecx, 1
11952
                mov     ebx, eax
11953
                shl     edx, 1Fh
11954
                shl     ebx, 1
11955
                or      edx, ecx
11956
                shr     ecx, 6
11957
                or      ebx, ecx
11958
                shr     ecx, 1
11959
                xor     edx, ebx
11960
                shl     ebp, 18h
11961
                or      eax, ecx
11962
                shr     edi, 1
11963
                mov     ecx, ebp
11964
                shl     ecx, 7
11965
                or      ecx, edi
11966
                shr     edi, 6
11967
                xor     edx, eax
11968
                xor     ecx, edi
11969
                mov     [esp+40h], edx
11970
                shr     edi, 1
11971
                or      ebp, edi
11972
                xor     ecx, ebp
11973
                mov     ebp, [esi+78h]
11974
                mov     edi, [esi+7Ch]
11975
                mov     [esp+44h], ecx
11976
                mov     ecx, ebp
11977
                mov     edx, edi
11978
                shl     ecx, 3
11979
                mov     eax, ebp
11980
                shr     edx, 1Dh
11981
                mov     ebx, edi
11982
                shr     eax, 6
11983
                or      edx, ecx
11984
                shl     ebx, 1Ah
11985
                or      eax, ebx
11986
                mov     ebx, edi
11987
                xor     edx, eax
11988
                shr     eax, 0Dh
11989
                mov     ecx, ebp
11990
                shl     ebx, 0Dh
11991
                or      eax, ebx
11992
                shr     ecx, 1Dh
11993
                xor     eax, edx
11994
                mov     edx, edi
11995
                shl     edx, 3
11996
                shr     edi, 6
11997
                or      edx, ecx
11998
                xor     edx, edi
11999
                shr     edi, 0Dh
12000
                mov     ecx, eax
12001
                shl     ebp, 0Dh
12002
                mov     eax, [esp+40h]
12003
                or      edi, ebp
12004
                mov     ebx, [esp+44h]
12005
                xor     edx, edi
12006
                mov     ebp, [esi+8]
12007
                mov     edi, [esi+0Ch]
12008
                add     eax, ecx
12009
                adc     ebx, edx
12010
                add     eax, ebp
12011
                adc     ebx, edi
12012
                mov     ebp, [esi+50h]
12013
                mov     edi, [esi+54h]
12014
                add     eax, ebp
12015
                adc     ebx, edi
12016
                mov     [esi+88h], eax
12017
                mov     [esi+8Ch], ebx
12018
                add     esi, 10h
12019
                add     dword ptr [esp+50h], 2
12020
                cmp     dword ptr [esp+50h], 50h
12021
                jnz     @@buffexpand_loop
12022
                mov     edi, [esp+5Ch]
12023
                mov     esi, [esp+58h]
12024
                mov     eax, [edi]
12025
                mov     ebx, [edi+4]
12026
                mov     ecx, [edi+8]
12027
                mov     edx, [edi+0Ch]
12028
                mov     [esp], eax
12029
                mov     [esp+4], ebx
12030
                mov     [esp+8], ecx
12031
                mov     [esp+0Ch], edx
12032
                mov     eax, [edi+10h]
12033
                mov     ebx, [edi+14h]
12034
                mov     ecx, [edi+18h]
12035
                mov     edx, [edi+1Ch]
12036
                mov     [esp+10h], eax
12037
                mov     [esp+14h], ebx
12038
                mov     [esp+18h], ecx
12039
                mov     [esp+1Ch], edx
12040
                mov     eax, [edi+20h]
12041
                mov     ebx, [edi+24h]
12042
                mov     ecx, [edi+28h]
12043
                mov     edx, [edi+2Ch]
12044
                mov     [esp+20h], eax
12045
                mov     [esp+24h], ebx
12046
                mov     [esp+28h], ecx
12047
                mov     [esp+2Ch], edx
12048
                mov     eax, [edi+30h]
12049
                mov     ebx, [edi+34h]
12050
                mov     ecx, [edi+38h]
12051
                mov     edx, [edi+3Ch]
12052
                mov     [esp+30h], eax
12053
                mov     [esp+34h], ebx
12054
                xor     eax, eax
12055
                mov     [esp+38h], ecx
12056
                mov     [esp+3Ch], edx
12057
                mov     [esp+50h], eax
12058
12059
            @@body_loop:
12060
                mov     eax, [esp+20h]
12061
                mov     ebx, [esp+24h]
12062
                mov     ecx, eax
12063
                mov     edx, ebx
12064
                shr     ecx, 0Eh
12065
                mov     ebp, eax
12066
                shl     edx, 12h
12067
                mov     edi, ebx
12068
                shr     ebp, 12h
12069
                or      ecx, edx
12070
                shl     edi, 0Eh
12071
                or      ebp, edi
12072
                mov     edx, ebx
12073
                xor     ebp, ecx
12074
                mov     ecx, eax
12075
                shl     ecx, 17h
12076
                shr     edx, 9
12077
                or      ecx, edx
12078
                mov     edx, eax
12079
                xor     ebp, ecx
12080
                mov     ecx, ebx
12081
                mov     [esp+40h], ebp
12082
                shr     ecx, 0Eh
12083
                mov     ebp, ebx
12084
                shl     edx, 12h
12085
                mov     edi, eax
12086
                shr     ebp, 12h
12087
                or      ecx, edx
12088
                shl     edi, 0Eh
12089
                or      ebp, edi
12090
                mov     edx, eax
12091
                xor     ebp, ecx
12092
                mov     ecx, ebx
12093
                shl     ecx, 17h
12094
                shr     edx, 9
12095
                or      ecx, edx
12096
                mov     edx, [esp+2Ch]
12097
                xor     ebp, ecx
12098
                mov     ecx, [esp+28h]
12099
                mov     [esp+44h], ebp
12100
                mov     ebp, [esp+30h]
12101
                mov     edi, [esp+34h]
12102
                xor     ecx, ebp
12103
                xor     edx, edi
12104
                and     ecx, eax
12105
                and     edx, ebx
12106
                xor     ecx, ebp
12107
                xor     edx, edi
12108
                add     ecx, [esp+40h]
12109
                mov     eax, [esp+38h]
12110
                adc     edx, [esp+44h]
12111
                mov     ebx, [esp+3Ch]
12112
                add     ecx, eax
12113
                mov     edi, [esp+50h]
12114
                adc     edx, ebx
12115
                mov     ebp, [esp+54h]
12116
                shl     edi, 3
12117
                add     edi, 0
12118
                shl     edi, 3
12119
                mov     eax, [edi+ebp]
12120
                mov     ebx, [edi+ebp+4]
12121
                add     ecx, eax
12122
                mov     eax, [esi+edi]
12123
                adc     edx, ebx
12124
                mov     ebx, [esi+edi+4]
12125
                add     ecx, eax
12126
                mov     eax, [esp]
12127
                adc     edx, ebx
12128
                mov     ebx, [esp+4]
12129
                mov     [esp+40h], ecx
12130
                mov     [esp+44h], edx
12131
                mov     ecx, eax
12132
                mov     edx, ebx
12133
                shr     ecx, 1Ch
12134
                mov     ebp, eax
12135
                shl     edx, 4
12136
                mov     edi, ebx
12137
                shl     ebp, 1Eh
12138
                or      ecx, edx
12139
                shr     edi, 2
12140
                or      ebp, edi
12141
                mov     edx, ebx
12142
                xor     ebp, ecx
12143
                mov     ecx, eax
12144
                shr     edx, 7
12145
                shl     ecx, 19h
12146
                or      ecx, edx
12147
                mov     edx, eax
12148
                xor     ebp, ecx
12149
                mov     ecx, ebx
12150
                mov     [esp+48h], ebp
12151
                shr     ecx, 1Ch
12152
                mov     ebp, ebx
12153
                shl     edx, 4
12154
                mov     edi, eax
12155
                shl     ebp, 1Eh
12156
                or      ecx, edx
12157
                shr     edi, 2
12158
                or      ebp, edi
12159
                mov     edx, eax
12160
                xor     ebp, ecx
12161
                mov     ecx, ebx
12162
                shl     ecx, 19h
12163
                shr     edx, 7
12164
                or      ecx, edx
12165
                mov     edx, [esp+0Ch]
12166
                xor     ebp, ecx
12167
                mov     ecx, [esp+8]
12168
                mov     [esp+4Ch], ebp
12169
                mov     ebp, [esp+10h]
12170
                mov     edi, [esp+14h]
12171
                or      ecx, ebp
12172
                or      edx, edi
12173
                and     eax, ecx
12174
                and     ebx, edx
12175
                mov     ecx, [esp+8]
12176
                mov     edx, [esp+0Ch]
12177
                and     ebp, ecx
12178
                and     edi, edx
12179
                or      eax, ebp
12180
                or      ebx, edi
12181
                mov     ecx, [esp+48h]
12182
                mov     edx, [esp+4Ch]
12183
                add     eax, ecx
12184
                mov     ebp, [esp+40h]
12185
                adc     ebx, edx
12186
                mov     ecx, [esp+18h]
12187
                mov     edx, [esp+1Ch]
12188
                mov     edi, [esp+44h]
12189
                add     ecx, ebp
12190
                adc     edx, edi
12191
                mov     [esp+18h], ecx
12192
                mov     [esp+1Ch], edx
12193
                add     ebp, eax
12194
                adc     edi, ebx
12195
                mov     [esp+38h], ebp
12196
                mov     [esp+3Ch], edi
12197
                mov     eax, [esp+18h]
12198
                mov     ebx, [esp+1Ch]
12199
                mov     ecx, eax
12200
                mov     edx, ebx
12201
                shr     ecx, 0Eh
12202
                mov     ebp, eax
12203
                shl     edx, 12h
12204
                mov     edi, ebx
12205
                shr     ebp, 12h
12206
                or      ecx, edx
12207
                shl     edi, 0Eh
12208
                or      ebp, edi
12209
                mov     edx, ebx
12210
                xor     ebp, ecx
12211
                mov     ecx, eax
12212
                shl     ecx, 17h
12213
                shr     edx, 9
12214
                or      ecx, edx
12215
                mov     edx, eax
12216
                xor     ebp, ecx
12217
                mov     ecx, ebx
12218
                mov     [esp+40h], ebp
12219
                shr     ecx, 0Eh
12220
                mov     ebp, ebx
12221
                shl     edx, 12h
12222
                mov     edi, eax
12223
                shr     ebp, 12h
12224
                or      ecx, edx
12225
                shl     edi, 0Eh
12226
                or      ebp, edi
12227
                mov     edx, eax
12228
                xor     ebp, ecx
12229
                mov     ecx, ebx
12230
                shl     ecx, 17h
12231
                shr     edx, 9
12232
                or      ecx, edx
12233
                mov     edx, [esp+24h]
12234
                xor     ebp, ecx
12235
                mov     ecx, [esp+20h]
12236
                mov     [esp+44h], ebp
12237
                mov     ebp, [esp+28h]
12238
                mov     edi, [esp+2Ch]
12239
                xor     ecx, ebp
12240
                xor     edx, edi
12241
                and     ecx, eax
12242
                and     edx, ebx
12243
                xor     ecx, ebp
12244
                xor     edx, edi
12245
                add     ecx, [esp+40h]
12246
                mov     eax, [esp+30h]
12247
                adc     edx, [esp+44h]
12248
                mov     ebx, [esp+34h]
12249
                add     ecx, eax
12250
                mov     edi, [esp+50h]
12251
                adc     edx, ebx
12252
                mov     ebp, [esp+54h]
12253
                shl     edi, 3
12254
                add     edi, 1
12255
                shl     edi, 3
12256
                mov     eax, [edi+ebp]
12257
                mov     ebx, [edi+ebp+4]
12258
                add     ecx, eax
12259
                mov     eax, [esi+edi]
12260
                adc     edx, ebx
12261
                mov     ebx, [esi+edi+4]
12262
                add     ecx, eax
12263
                mov     eax, [esp+38h]
12264
                adc     edx, ebx
12265
                mov     ebx, [esp+3Ch]
12266
                mov     [esp+40h], ecx
12267
                mov     [esp+44h], edx
12268
                mov     ecx, eax
12269
                mov     edx, ebx
12270
                shr     ecx, 1Ch
12271
                mov     ebp, eax
12272
                shl     edx, 4
12273
                mov     edi, ebx
12274
                shl     ebp, 1Eh
12275
                or      ecx, edx
12276
                shr     edi, 2
12277
                or      ebp, edi
12278
                mov     edx, ebx
12279
                xor     ebp, ecx
12280
                mov     ecx, eax
12281
                shr     edx, 7
12282
                shl     ecx, 19h
12283
                or      ecx, edx
12284
                mov     edx, eax
12285
                xor     ebp, ecx
12286
                mov     ecx, ebx
12287
                mov     [esp+48h], ebp
12288
                shr     ecx, 1Ch
12289
                mov     ebp, ebx
12290
                shl     edx, 4
12291
                mov     edi, eax
12292
                shl     ebp, 1Eh
12293
                or      ecx, edx
12294
                shr     edi, 2
12295
                or      ebp, edi
12296
                mov     edx, eax
12297
                xor     ebp, ecx
12298
                mov     ecx, ebx
12299
                shl     ecx, 19h
12300
                shr     edx, 7
12301
                or      ecx, edx
12302
                mov     edx, [esp+4]
12303
                xor     ebp, ecx
12304
                mov     ecx, [esp]
12305
                mov     [esp+4Ch], ebp
12306
                mov     ebp, [esp+8]
12307
                mov     edi, [esp+0Ch]
12308
                or      ecx, ebp
12309
                or      edx, edi
12310
                and     eax, ecx
12311
                and     ebx, edx
12312
                mov     ecx, [esp]
12313
                mov     edx, [esp+4]
12314
                and     ebp, ecx
12315
                and     edi, edx
12316
                or      eax, ebp
12317
                or      ebx, edi
12318
                mov     ecx, [esp+48h]
12319
                mov     edx, [esp+4Ch]
12320
                add     eax, ecx
12321
                mov     ebp, [esp+40h]
12322
                adc     ebx, edx
12323
                mov     ecx, [esp+10h]
12324
                mov     edx, [esp+14h]
12325
                mov     edi, [esp+44h]
12326
                add     ecx, ebp
12327
                adc     edx, edi
12328
                mov     [esp+10h], ecx
12329
                mov     [esp+14h], edx
12330
                add     ebp, eax
12331
                adc     edi, ebx
12332
                mov     [esp+30h], ebp
12333
                mov     [esp+34h], edi
12334
                mov     eax, [esp+10h]
12335
                mov     ebx, [esp+14h]
12336
                mov     ecx, eax
12337
                mov     edx, ebx
12338
                shr     ecx, 0Eh
12339
                mov     ebp, eax
12340
                shl     edx, 12h
12341
                mov     edi, ebx
12342
                shr     ebp, 12h
12343
                or      ecx, edx
12344
                shl     edi, 0Eh
12345
                or      ebp, edi
12346
                mov     edx, ebx
12347
                xor     ebp, ecx
12348
                mov     ecx, eax
12349
                shl     ecx, 17h
12350
                shr     edx, 9
12351
                or      ecx, edx
12352
                mov     edx, eax
12353
                xor     ebp, ecx
12354
                mov     ecx, ebx
12355
                mov     [esp+40h], ebp
12356
                shr     ecx, 0Eh
12357
                mov     ebp, ebx
12358
                shl     edx, 12h
12359
                mov     edi, eax
12360
                shr     ebp, 12h
12361
                or      ecx, edx
12362
                shl     edi, 0Eh
12363
                or      ebp, edi
12364
                mov     edx, eax
12365
                xor     ebp, ecx
12366
                mov     ecx, ebx
12367
                shl     ecx, 17h
12368
                shr     edx, 9
12369
                or      ecx, edx
12370
                mov     edx, [esp+1Ch]
12371
                xor     ebp, ecx
12372
                mov     ecx, [esp+18h]
12373
                mov     [esp+44h], ebp
12374
                mov     ebp, [esp+20h]
12375
                mov     edi, [esp+24h]
12376
                xor     ecx, ebp
12377
                xor     edx, edi
12378
                and     ecx, eax
12379
                and     edx, ebx
12380
                xor     ecx, ebp
12381
                xor     edx, edi
12382
                add     ecx, [esp+40h]
12383
                mov     eax, [esp+28h]
12384
                adc     edx, [esp+44h]
12385
                mov     ebx, [esp+2Ch]
12386
                add     ecx, eax
12387
                mov     edi, [esp+50h]
12388
                adc     edx, ebx
12389
                mov     ebp, [esp+54h]
12390
                shl     edi, 3
12391
                add     edi, 2
12392
                shl     edi, 3
12393
                mov     eax, [edi+ebp]
12394
                mov     ebx, [edi+ebp+4]
12395
                add     ecx, eax
12396
                mov     eax, [esi+edi]
12397
                adc     edx, ebx
12398
                mov     ebx, [esi+edi+4]
12399
                add     ecx, eax
12400
                mov     eax, [esp+30h]
12401
                adc     edx, ebx
12402
                mov     ebx, [esp+34h]
12403
                mov     [esp+40h], ecx
12404
                mov     [esp+44h], edx
12405
                mov     ecx, eax
12406
                mov     edx, ebx
12407
                shr     ecx, 1Ch
12408
                mov     ebp, eax
12409
                shl     edx, 4
12410
                mov     edi, ebx
12411
                shl     ebp, 1Eh
12412
                or      ecx, edx
12413
                shr     edi, 2
12414
                or      ebp, edi
12415
                mov     edx, ebx
12416
                xor     ebp, ecx
12417
                mov     ecx, eax
12418
                shr     edx, 7
12419
                shl     ecx, 19h
12420
                or      ecx, edx
12421
                mov     edx, eax
12422
                xor     ebp, ecx
12423
                mov     ecx, ebx
12424
                mov     [esp+48h], ebp
12425
                shr     ecx, 1Ch
12426
                mov     ebp, ebx
12427
                shl     edx, 4
12428
                mov     edi, eax
12429
                shl     ebp, 1Eh
12430
                or      ecx, edx
12431
                shr     edi, 2
12432
                or      ebp, edi
12433
                mov     edx, eax
12434
                xor     ebp, ecx
12435
                mov     ecx, ebx
12436
                shl     ecx, 19h
12437
                shr     edx, 7
12438
                or      ecx, edx
12439
                mov     edx, [esp+3Ch]
12440
                xor     ebp, ecx
12441
                mov     ecx, [esp+38h]
12442
                mov     [esp+4Ch], ebp
12443
                mov     ebp, [esp]
12444
                mov     edi, [esp+4]
12445
                or      ecx, ebp
12446
                or      edx, edi
12447
                and     eax, ecx
12448
                and     ebx, edx
12449
                mov     ecx, [esp+38h]
12450
                mov     edx, [esp+3Ch]
12451
                and     ebp, ecx
12452
                and     edi, edx
12453
                or      eax, ebp
12454
                or      ebx, edi
12455
                mov     ecx, [esp+48h]
12456
                mov     edx, [esp+4Ch]
12457
                add     eax, ecx
12458
                mov     ebp, [esp+40h]
12459
                adc     ebx, edx
12460
                mov     ecx, [esp+8]
12461
                mov     edx, [esp+0Ch]
12462
                mov     edi, [esp+44h]
12463
                add     ecx, ebp
12464
                adc     edx, edi
12465
                mov     [esp+8], ecx
12466
                mov     [esp+0Ch], edx
12467
                add     ebp, eax
12468
                adc     edi, ebx
12469
                mov     [esp+28h], ebp
12470
                mov     [esp+2Ch], edi
12471
                mov     eax, [esp+8]
12472
                mov     ebx, [esp+0Ch]
12473
                mov     ecx, eax
12474
                mov     edx, ebx
12475
                shr     ecx, 0Eh
12476
                mov     ebp, eax
12477
                shl     edx, 12h
12478
                mov     edi, ebx
12479
                shr     ebp, 12h
12480
                or      ecx, edx
12481
                shl     edi, 0Eh
12482
                or      ebp, edi
12483
                mov     edx, ebx
12484
                xor     ebp, ecx
12485
                mov     ecx, eax
12486
                shl     ecx, 17h
12487
                shr     edx, 9
12488
                or      ecx, edx
12489
                mov     edx, eax
12490
                xor     ebp, ecx
12491
                mov     ecx, ebx
12492
                mov     [esp+40h], ebp
12493
                shr     ecx, 0Eh
12494
                mov     ebp, ebx
12495
                shl     edx, 12h
12496
                mov     edi, eax
12497
                shr     ebp, 12h
12498
                or      ecx, edx
12499
                shl     edi, 0Eh
12500
                or      ebp, edi
12501
                mov     edx, eax
12502
                xor     ebp, ecx
12503
                mov     ecx, ebx
12504
                shl     ecx, 17h
12505
                shr     edx, 9
12506
                or      ecx, edx
12507
                mov     edx, [esp+14h]
12508
                xor     ebp, ecx
12509
                mov     ecx, [esp+10h]
12510
                mov     [esp+44h], ebp
12511
                mov     ebp, [esp+18h]
12512
                mov     edi, [esp+1Ch]
12513
                xor     ecx, ebp
12514
                xor     edx, edi
12515
                and     ecx, eax
12516
                and     edx, ebx
12517
                xor     ecx, ebp
12518
                xor     edx, edi
12519
                add     ecx, [esp+40h]
12520
                mov     eax, [esp+20h]
12521
                adc     edx, [esp+44h]
12522
                mov     ebx, [esp+24h]
12523
                add     ecx, eax
12524
                mov     edi, [esp+50h]
12525
                adc     edx, ebx
12526
                mov     ebp, [esp+54h]
12527
                shl     edi, 3
12528
                add     edi, 3
12529
                shl     edi, 3
12530
                mov     eax, [edi+ebp]
12531
                mov     ebx, [edi+ebp+4]
12532
                add     ecx, eax
12533
                mov     eax, [esi+edi]
12534
                adc     edx, ebx
12535
                mov     ebx, [esi+edi+4]
12536
                add     ecx, eax
12537
                mov     eax, [esp+28h]
12538
                adc     edx, ebx
12539
                mov     ebx, [esp+2Ch]
12540
                mov     [esp+40h], ecx
12541
                mov     [esp+44h], edx
12542
                mov     ecx, eax
12543
                mov     edx, ebx
12544
                shr     ecx, 1Ch
12545
                mov     ebp, eax
12546
                shl     edx, 4
12547
                mov     edi, ebx
12548
                shl     ebp, 1Eh
12549
                or      ecx, edx
12550
                shr     edi, 2
12551
                or      ebp, edi
12552
                mov     edx, ebx
12553
                xor     ebp, ecx
12554
                mov     ecx, eax
12555
                shr     edx, 7
12556
                shl     ecx, 19h
12557
                or      ecx, edx
12558
                mov     edx, eax
12559
                xor     ebp, ecx
12560
                mov     ecx, ebx
12561
                mov     [esp+48h], ebp
12562
                shr     ecx, 1Ch
12563
                mov     ebp, ebx
12564
                shl     edx, 4
12565
                mov     edi, eax
12566
                shl     ebp, 1Eh
12567
                or      ecx, edx
12568
                shr     edi, 2
12569
                or      ebp, edi
12570
                mov     edx, eax
12571
                xor     ebp, ecx
12572
                mov     ecx, ebx
12573
                shl     ecx, 19h
12574
                shr     edx, 7
12575
                or      ecx, edx
12576
                mov     edx, [esp+34h]
12577
                xor     ebp, ecx
12578
                mov     ecx, [esp+30h]
12579
                mov     [esp+4Ch], ebp
12580
                mov     ebp, [esp+38h]
12581
                mov     edi, [esp+3Ch]
12582
                or      ecx, ebp
12583
                or      edx, edi
12584
                and     eax, ecx
12585
                and     ebx, edx
12586
                mov     ecx, [esp+30h]
12587
                mov     edx, [esp+34h]
12588
                and     ebp, ecx
12589
                and     edi, edx
12590
                or      eax, ebp
12591
                or      ebx, edi
12592
                mov     ecx, [esp+48h]
12593
                mov     edx, [esp+4Ch]
12594
                add     eax, ecx
12595
                mov     ebp, [esp+40h]
12596
                adc     ebx, edx
12597
                mov     ecx, [esp]
12598
                mov     edx, [esp+4]
12599
                mov     edi, [esp+44h]
12600
                add     ecx, ebp
12601
                adc     edx, edi
12602
                mov     [esp], ecx
12603
                mov     [esp+4], edx
12604
                add     ebp, eax
12605
                adc     edi, ebx
12606
                mov     [esp+20h], ebp
12607
                mov     [esp+24h], edi
12608
                mov     eax, [esp]
12609
                mov     ebx, [esp+4]
12610
                mov     ecx, eax
12611
                mov     edx, ebx
12612
                shr     ecx, 0Eh
12613
                mov     ebp, eax
12614
                shl     edx, 12h
12615
                mov     edi, ebx
12616
                shr     ebp, 12h
12617
                or      ecx, edx
12618
                shl     edi, 0Eh
12619
                or      ebp, edi
12620
                mov     edx, ebx
12621
                xor     ebp, ecx
12622
                mov     ecx, eax
12623
                shl     ecx, 17h
12624
                shr     edx, 9
12625
                or      ecx, edx
12626
                mov     edx, eax
12627
                xor     ebp, ecx
12628
                mov     ecx, ebx
12629
                mov     [esp+40h], ebp
12630
                shr     ecx, 0Eh
12631
                mov     ebp, ebx
12632
                shl     edx, 12h
12633
                mov     edi, eax
12634
                shr     ebp, 12h
12635
                or      ecx, edx
12636
                shl     edi, 0Eh
12637
                or      ebp, edi
12638
                mov     edx, eax
12639
                xor     ebp, ecx
12640
                mov     ecx, ebx
12641
                shl     ecx, 17h
12642
                shr     edx, 9
12643
                or      ecx, edx
12644
                mov     edx, [esp+0Ch]
12645
                xor     ebp, ecx
12646
                mov     ecx, [esp+8]
12647
                mov     [esp+44h], ebp
12648
                mov     ebp, [esp+10h]
12649
                mov     edi, [esp+14h]
12650
                xor     ecx, ebp
12651
                xor     edx, edi
12652
                and     ecx, eax
12653
                and     edx, ebx
12654
                xor     ecx, ebp
12655
                xor     edx, edi
12656
                add     ecx, [esp+40h]
12657
                mov     eax, [esp+18h]
12658
                adc     edx, [esp+44h]
12659
                mov     ebx, [esp+1Ch]
12660
                add     ecx, eax
12661
                mov     edi, [esp+50h]
12662
                adc     edx, ebx
12663
                mov     ebp, [esp+54h]
12664
                shl     edi, 3
12665
                add     edi, 4
12666
                shl     edi, 3
12667
                mov     eax, [edi+ebp]
12668
                mov     ebx, [edi+ebp+4]
12669
                add     ecx, eax
12670
                mov     eax, [esi+edi]
12671
                adc     edx, ebx
12672
                mov     ebx, [esi+edi+4]
12673
                add     ecx, eax
12674
                mov     eax, [esp+20h]
12675
                adc     edx, ebx
12676
                mov     ebx, [esp+24h]
12677
                mov     [esp+40h], ecx
12678
                mov     [esp+44h], edx
12679
                mov     ecx, eax
12680
                mov     edx, ebx
12681
                shr     ecx, 1Ch
12682
                mov     ebp, eax
12683
                shl     edx, 4
12684
                mov     edi, ebx
12685
                shl     ebp, 1Eh
12686
                or      ecx, edx
12687
                shr     edi, 2
12688
                or      ebp, edi
12689
                mov     edx, ebx
12690
                xor     ebp, ecx
12691
                mov     ecx, eax
12692
                shr     edx, 7
12693
                shl     ecx, 19h
12694
                or      ecx, edx
12695
                mov     edx, eax
12696
                xor     ebp, ecx
12697
                mov     ecx, ebx
12698
                mov     [esp+48h], ebp
12699
                shr     ecx, 1Ch
12700
                mov     ebp, ebx
12701
                shl     edx, 4
12702
                mov     edi, eax
12703
                shl     ebp, 1Eh
12704
                or      ecx, edx
12705
                shr     edi, 2
12706
                or      ebp, edi
12707
                mov     edx, eax
12708
                xor     ebp, ecx
12709
                mov     ecx, ebx
12710
                shl     ecx, 19h
12711
                shr     edx, 7
12712
                or      ecx, edx
12713
                mov     edx, [esp+2Ch]
12714
                xor     ebp, ecx
12715
                mov     ecx, [esp+28h]
12716
                mov     [esp+4Ch], ebp
12717
                mov     ebp, [esp+30h]
12718
                mov     edi, [esp+34h]
12719
                or      ecx, ebp
12720
                or      edx, edi
12721
                and     eax, ecx
12722
                and     ebx, edx
12723
                mov     ecx, [esp+28h]
12724
                mov     edx, [esp+2Ch]
12725
                and     ebp, ecx
12726
                and     edi, edx
12727
                or      eax, ebp
12728
                or      ebx, edi
12729
                mov     ecx, [esp+48h]
12730
                mov     edx, [esp+4Ch]
12731
                add     eax, ecx
12732
                mov     ebp, [esp+40h]
12733
                adc     ebx, edx
12734
                mov     ecx, [esp+38h]
12735
                mov     edx, [esp+3Ch]
12736
                mov     edi, [esp+44h]
12737
                add     ecx, ebp
12738
                adc     edx, edi
12739
                mov     [esp+38h], ecx
12740
                mov     [esp+3Ch], edx
12741
                add     ebp, eax
12742
                adc     edi, ebx
12743
                mov     [esp+18h], ebp
12744
                mov     [esp+1Ch], edi
12745
                mov     eax, [esp+38h]
12746
                mov     ebx, [esp+3Ch]
12747
                mov     ecx, eax
12748
                mov     edx, ebx
12749
                shr     ecx, 0Eh
12750
                mov     ebp, eax
12751
                shl     edx, 12h
12752
                mov     edi, ebx
12753
                shr     ebp, 12h
12754
                or      ecx, edx
12755
                shl     edi, 0Eh
12756
                or      ebp, edi
12757
                mov     edx, ebx
12758
                xor     ebp, ecx
12759
                mov     ecx, eax
12760
                shl     ecx, 17h
12761
                shr     edx, 9
12762
                or      ecx, edx
12763
                mov     edx, eax
12764
                xor     ebp, ecx
12765
                mov     ecx, ebx
12766
                mov     [esp+40h], ebp
12767
                shr     ecx, 0Eh
12768
                mov     ebp, ebx
12769
                shl     edx, 12h
12770
                mov     edi, eax
12771
                shr     ebp, 12h
12772
                or      ecx, edx
12773
                shl     edi, 0Eh
12774
                or      ebp, edi
12775
                mov     edx, eax
12776
                xor     ebp, ecx
12777
                mov     ecx, ebx
12778
                shl     ecx, 17h
12779
                shr     edx, 9
12780
                or      ecx, edx
12781
                mov     edx, [esp+4]
12782
                xor     ebp, ecx
12783
                mov     ecx, [esp]
12784
                mov     [esp+44h], ebp
12785
                mov     ebp, [esp+8]
12786
                mov     edi, [esp+0Ch]
12787
                xor     ecx, ebp
12788
                xor     edx, edi
12789
                and     ecx, eax
12790
                and     edx, ebx
12791
                xor     ecx, ebp
12792
                xor     edx, edi
12793
                add     ecx, [esp+40h]
12794
                mov     eax, [esp+10h]
12795
                adc     edx, [esp+44h]
12796
                mov     ebx, [esp+14h]
12797
                add     ecx, eax
12798
                mov     edi, [esp+50h]
12799
                adc     edx, ebx
12800
                mov     ebp, [esp+54h]
12801
                shl     edi, 3
12802
                add     edi, 5
12803
                shl     edi, 3
12804
                mov     eax, [edi+ebp]
12805
                mov     ebx, [edi+ebp+4]
12806
                add     ecx, eax
12807
                mov     eax, [esi+edi]
12808
                adc     edx, ebx
12809
                mov     ebx, [esi+edi+4]
12810
                add     ecx, eax
12811
                mov     eax, [esp+18h]
12812
                adc     edx, ebx
12813
                mov     ebx, [esp+1Ch]
12814
                mov     [esp+40h], ecx
12815
                mov     [esp+44h], edx
12816
                mov     ecx, eax
12817
                mov     edx, ebx
12818
                shr     ecx, 1Ch
12819
                mov     ebp, eax
12820
                shl     edx, 4
12821
                mov     edi, ebx
12822
                shl     ebp, 1Eh
12823
                or      ecx, edx
12824
                shr     edi, 2
12825
                or      ebp, edi
12826
                mov     edx, ebx
12827
                xor     ebp, ecx
12828
                mov     ecx, eax
12829
                shr     edx, 7
12830
                shl     ecx, 19h
12831
                or      ecx, edx
12832
                mov     edx, eax
12833
                xor     ebp, ecx
12834
                mov     ecx, ebx
12835
                mov     [esp+48h], ebp
12836
                shr     ecx, 1Ch
12837
                mov     ebp, ebx
12838
                shl     edx, 4
12839
                mov     edi, eax
12840
                shl     ebp, 1Eh
12841
                or      ecx, edx
12842
                shr     edi, 2
12843
                or      ebp, edi
12844
                mov     edx, eax
12845
                xor     ebp, ecx
12846
                mov     ecx, ebx
12847
                shl     ecx, 19h
12848
                shr     edx, 7
12849
                or      ecx, edx
12850
                mov     edx, [esp+24h]
12851
                xor     ebp, ecx
12852
                mov     ecx, [esp+20h]
12853
                mov     [esp+4Ch], ebp
12854
                mov     ebp, [esp+28h]
12855
                mov     edi, [esp+2Ch]
12856
                or      ecx, ebp
12857
                or      edx, edi
12858
                and     eax, ecx
12859
                and     ebx, edx
12860
                mov     ecx, [esp+20h]
12861
                mov     edx, [esp+24h]
12862
                and     ebp, ecx
12863
                and     edi, edx
12864
                or      eax, ebp
12865
                or      ebx, edi
12866
                mov     ecx, [esp+48h]
12867
                mov     edx, [esp+4Ch]
12868
                add     eax, ecx
12869
                mov     ebp, [esp+40h]
12870
                adc     ebx, edx
12871
                mov     ecx, [esp+30h]
12872
                mov     edx, [esp+34h]
12873
                mov     edi, [esp+44h]
12874
                add     ecx, ebp
12875
                adc     edx, edi
12876
                mov     [esp+30h], ecx
12877
                mov     [esp+34h], edx
12878
                add     ebp, eax
12879
                adc     edi, ebx
12880
                mov     [esp+10h], ebp
12881
                mov     [esp+14h], edi
12882
                mov     eax, [esp+30h]
12883
                mov     ebx, [esp+34h]
12884
                mov     ecx, eax
12885
                mov     edx, ebx
12886
                shr     ecx, 0Eh
12887
                mov     ebp, eax
12888
                shl     edx, 12h
12889
                mov     edi, ebx
12890
                shr     ebp, 12h
12891
                or      ecx, edx
12892
                shl     edi, 0Eh
12893
                or      ebp, edi
12894
                mov     edx, ebx
12895
                xor     ebp, ecx
12896
                mov     ecx, eax
12897
                shl     ecx, 17h
12898
                shr     edx, 9
12899
                or      ecx, edx
12900
                mov     edx, eax
12901
                xor     ebp, ecx
12902
                mov     ecx, ebx
12903
                mov     [esp+40h], ebp
12904
                shr     ecx, 0Eh
12905
                mov     ebp, ebx
12906
                shl     edx, 12h
12907
                mov     edi, eax
12908
                shr     ebp, 12h
12909
                or      ecx, edx
12910
                shl     edi, 0Eh
12911
                or      ebp, edi
12912
                mov     edx, eax
12913
                xor     ebp, ecx
12914
                mov     ecx, ebx
12915
                shl     ecx, 17h
12916
                shr     edx, 9
12917
                or      ecx, edx
12918
                mov     edx, [esp+3Ch]
12919
                xor     ebp, ecx
12920
                mov     ecx, [esp+38h]
12921
                mov     [esp+44h], ebp
12922
                mov     ebp, [esp]
12923
                mov     edi, [esp+4]
12924
                xor     ecx, ebp
12925
                xor     edx, edi
12926
                and     ecx, eax
12927
                and     edx, ebx
12928
                xor     ecx, ebp
12929
                xor     edx, edi
12930
                add     ecx, [esp+40h]
12931
                mov     eax, [esp+8]
12932
                adc     edx, [esp+44h]
12933
                mov     ebx, [esp+0Ch]
12934
                add     ecx, eax
12935
                mov     edi, [esp+50h]
12936
                adc     edx, ebx
12937
                mov     ebp, [esp+54h]
12938
                shl     edi, 3
12939
                add     edi, 6
12940
                shl     edi, 3
12941
                mov     eax, [edi+ebp]
12942
                mov     ebx, [edi+ebp+4]
12943
                add     ecx, eax
12944
                mov     eax, [esi+edi]
12945
                adc     edx, ebx
12946
                mov     ebx, [esi+edi+4]
12947
                add     ecx, eax
12948
                mov     eax, [esp+10h]
12949
                adc     edx, ebx
12950
                mov     ebx, [esp+14h]
12951
                mov     [esp+40h], ecx
12952
                mov     [esp+44h], edx
12953
                mov     ecx, eax
12954
                mov     edx, ebx
12955
                shr     ecx, 1Ch
12956
                mov     ebp, eax
12957
                shl     edx, 4
12958
                mov     edi, ebx
12959
                shl     ebp, 1Eh
12960
                or      ecx, edx
12961
                shr     edi, 2
12962
                or      ebp, edi
12963
                mov     edx, ebx
12964
                xor     ebp, ecx
12965
                mov     ecx, eax
12966
                shr     edx, 7
12967
                shl     ecx, 19h
12968
                or      ecx, edx
12969
                mov     edx, eax
12970
                xor     ebp, ecx
12971
                mov     ecx, ebx
12972
                mov     [esp+48h], ebp
12973
                shr     ecx, 1Ch
12974
                mov     ebp, ebx
12975
                shl     edx, 4
12976
                mov     edi, eax
12977
                shl     ebp, 1Eh
12978
                or      ecx, edx
12979
                shr     edi, 2
12980
                or      ebp, edi
12981
                mov     edx, eax
12982
                xor     ebp, ecx
12983
                mov     ecx, ebx
12984
                shl     ecx, 19h
12985
                shr     edx, 7
12986
                or      ecx, edx
12987
                mov     edx, [esp+1Ch]
12988
                xor     ebp, ecx
12989
                mov     ecx, [esp+18h]
12990
                mov     [esp+4Ch], ebp
12991
                mov     ebp, [esp+20h]
12992
                mov     edi, [esp+24h]
12993
                or      ecx, ebp
12994
                or      edx, edi
12995
                and     eax, ecx
12996
                and     ebx, edx
12997
                mov     ecx, [esp+18h]
12998
                mov     edx, [esp+1Ch]
12999
                and     ebp, ecx
13000
                and     edi, edx
13001
                or      eax, ebp
13002
                or      ebx, edi
13003
                mov     ecx, [esp+48h]
13004
                mov     edx, [esp+4Ch]
13005
                add     eax, ecx
13006
                mov     ebp, [esp+40h]
13007
                adc     ebx, edx
13008
                mov     ecx, [esp+28h]
13009
                mov     edx, [esp+2Ch]
13010
                mov     edi, [esp+44h]
13011
                add     ecx, ebp
13012
                adc     edx, edi
13013
                mov     [esp+28h], ecx
13014
                mov     [esp+2Ch], edx
13015
                add     ebp, eax
13016
                adc     edi, ebx
13017
                mov     [esp+8], ebp
13018
                mov     [esp+0Ch], edi
13019
                mov     eax, [esp+28h]
13020
                mov     ebx, [esp+2Ch]
13021
                mov     ecx, eax
13022
                mov     edx, ebx
13023
                shr     ecx, 0Eh
13024
                mov     ebp, eax
13025
                shl     edx, 12h
13026
                mov     edi, ebx
13027
                shr     ebp, 12h
13028
                or      ecx, edx
13029
                shl     edi, 0Eh
13030
                or      ebp, edi
13031
                mov     edx, ebx
13032
                xor     ebp, ecx
13033
                mov     ecx, eax
13034
                shl     ecx, 17h
13035
                shr     edx, 9
13036
                or      ecx, edx
13037
                mov     edx, eax
13038
                xor     ebp, ecx
13039
                mov     ecx, ebx
13040
                mov     [esp+40h], ebp
13041
                shr     ecx, 0Eh
13042
                mov     ebp, ebx
13043
                shl     edx, 12h
13044
                mov     edi, eax
13045
                shr     ebp, 12h
13046
                or      ecx, edx
13047
                shl     edi, 0Eh
13048
                or      ebp, edi
13049
                mov     edx, eax
13050
                xor     ebp, ecx
13051
                mov     ecx, ebx
13052
                shl     ecx, 17h
13053
                shr     edx, 9
13054
                or      ecx, edx
13055
                mov     edx, [esp+34h]
13056
                xor     ebp, ecx
13057
                mov     ecx, [esp+30h]
13058
                mov     [esp+44h], ebp
13059
                mov     ebp, [esp+38h]
13060
                mov     edi, [esp+3Ch]
13061
                xor     ecx, ebp
13062
                xor     edx, edi
13063
                and     ecx, eax
13064
                and     edx, ebx
13065
                xor     ecx, ebp
13066
                xor     edx, edi
13067
                add     ecx, [esp+40h]
13068
                mov     eax, [esp]
13069
                adc     edx, [esp+44h]
13070
                mov     ebx, [esp+4]
13071
                add     ecx, eax
13072
                mov     edi, [esp+50h]
13073
                adc     edx, ebx
13074
                mov     ebp, [esp+54h]
13075
                shl     edi, 3
13076
                add     edi, 7
13077
                shl     edi, 3
13078
                mov     eax, [edi+ebp]
13079
                mov     ebx, [edi+ebp+4]
13080
                add     ecx, eax
13081
                mov     eax, [esi+edi]
13082
                adc     edx, ebx
13083
                mov     ebx, [esi+edi+4]
13084
                add     ecx, eax
13085
                mov     eax, [esp+8]
13086
                adc     edx, ebx
13087
                mov     ebx, [esp+0Ch]
13088
                mov     [esp+40h], ecx
13089
                mov     [esp+44h], edx
13090
                mov     ecx, eax
13091
                mov     edx, ebx
13092
                shr     ecx, 1Ch
13093
                mov     ebp, eax
13094
                shl     edx, 4
13095
                mov     edi, ebx
13096
                shl     ebp, 1Eh
13097
                or      ecx, edx
13098
                shr     edi, 2
13099
                or      ebp, edi
13100
                mov     edx, ebx
13101
                xor     ebp, ecx
13102
                mov     ecx, eax
13103
                shr     edx, 7
13104
                shl     ecx, 19h
13105
                or      ecx, edx
13106
                mov     edx, eax
13107
                xor     ebp, ecx
13108
                mov     ecx, ebx
13109
                mov     [esp+48h], ebp
13110
                shr     ecx, 1Ch
13111
                mov     ebp, ebx
13112
                shl     edx, 4
13113
                mov     edi, eax
13114
                shl     ebp, 1Eh
13115
                or      ecx, edx
13116
                shr     edi, 2
13117
                or      ebp, edi
13118
                mov     edx, eax
13119
                xor     ebp, ecx
13120
                mov     ecx, ebx
13121
                shl     ecx, 19h
13122
                shr     edx, 7
13123
                or      ecx, edx
13124
                mov     edx, [esp+14h]
13125
                xor     ebp, ecx
13126
                mov     ecx, [esp+10h]
13127
                mov     [esp+4Ch], ebp
13128
                mov     ebp, [esp+18h]
13129
                mov     edi, [esp+1Ch]
13130
                or      ecx, ebp
13131
                or      edx, edi
13132
                and     eax, ecx
13133
                and     ebx, edx
13134
                mov     ecx, [esp+10h]
13135
                mov     edx, [esp+14h]
13136
                and     ebp, ecx
13137
                and     edi, edx
13138
                or      eax, ebp
13139
                or      ebx, edi
13140
                mov     ecx, [esp+48h]
13141
                mov     edx, [esp+4Ch]
13142
                add     eax, ecx
13143
                mov     ebp, [esp+40h]
13144
                adc     ebx, edx
13145
                mov     ecx, [esp+20h]
13146
                mov     edx, [esp+24h]
13147
                mov     edi, [esp+44h]
13148
                add     ecx, ebp
13149
                adc     edx, edi
13150
                mov     [esp+20h], ecx
13151
                mov     [esp+24h], edx
13152
                add     ebp, eax
13153
                adc     edi, ebx
13154
                mov     [esp], ebp
13155
                mov     [esp+4], edi
13156
                inc     dword ptr [esp+50h]
13157
                cmp     dword ptr [esp+50h], 0Ah
13158
                jnz     @@body_loop
13159
                mov     edi, [esp+5Ch]
13160
                mov     eax, [esp]
13161
                mov     ebx, [esp+4]
13162
                mov     ecx, [esp+8]
13163
                mov     edx, [esp+0Ch]
13164
                add     [edi], eax
13165
                adc     [edi+4], ebx
13166
                add     [edi+8], ecx
13167
                adc     [edi+0Ch], edx
13168
                mov     eax, [esp+10h]
13169
                mov     ebx, [esp+14h]
13170
                mov     ecx, [esp+18h]
13171
                mov     edx, [esp+1Ch]
13172
                add     [edi+10h], eax
13173
                adc     [edi+14h], ebx
13174
                add     [edi+18h], ecx
13175
                adc     [edi+1Ch], edx
13176
                mov     eax, [esp+20h]
13177
                mov     ebx, [esp+24h]
13178
                mov     ecx, [esp+28h]
13179
                mov     edx, [esp+2Ch]
13180
                add     [edi+20h], eax
13181
                adc     [edi+24h], ebx
13182
                add     [edi+28h], ecx
13183
                adc     [edi+2Ch], edx
13184
                mov     eax, [esp+30h]
13185
                mov     ebx, [esp+34h]
13186
                mov     ecx, [esp+38h]
13187
                mov     edx, [esp+3Ch]
13188
                add     [edi+30h], eax
13189
                adc     [edi+34h], ebx
13190
                add     [edi+38h], ecx
13191
                adc     [edi+3Ch], edx
13192
                add     esp, 60h
13193
13194
                pop     ebp
13195
                pop     edi
13196
                pop     esi
13197
                pop     ebx
13198
  end;
13199
end;
13200
{$ENDIF}
13201
13202
{$IFDEF THashBaseHaval_asm}
13203
procedure THashBaseHaval.DoTransform3(Buffer: PUInt32Array);
13204
asm
13205
                push    ebx
13206
                push    esi
13207
                push    edi
13208
                lea     edi, [eax].THashBaseHaval.FDigest
13209
                mov     esi, edx
13210
                push    ebp
13211
                mov     ebp, esp
13212
                add     esp, 0FFFFFFD4h
13213
                and     esp, 0FFFFFFC0h
13214
                mov     eax, [edi]
13215
                mov     ebx, [edi+4]
13216
                mov     [esp+20h], esi
13217
                mov     [esp+24h], edi
13218
                mov     [esp+28h], ebp
13219
                mov     [esp], eax
13220
                mov     [esp+4], ebx
13221
                mov     ecx, [edi+8]
13222
                mov     edx, [edi+0Ch]
13223
                mov     [esp+8], ecx
13224
                mov     [esp+0Ch], edx
13225
                mov     eax, [edi+10h]
13226
                mov     ebx, [edi+14h]
13227
                mov     [esp+10h], eax
13228
                mov     [esp+14h], ebx
13229
                mov     ecx, [edi+18h]
13230
                mov     edx, [edi+1Ch]
13231
                mov     [esp+18h], ecx
13232
                mov     [esp+1Ch], edx
13233
                mov     eax, edx
13234
                mov     ebp, [esp]
13235
                mov     ebx, [esp+0Ch]
13236
                mov     ecx, [esp+10h]
13237
                ror     eax, 0Bh
13238
                xor     ebx, ecx
13239
                mov     edi, [esp+4]
13240
                and     ebx, [esp+8]
13241
                and     edi, [esp+14h]
13242
                xor     ecx, ebx
13243
                and     ebp, [esp+18h]
13244
                xor     edi, ecx
13245
                mov     edx, [esi]
13246
                xor     ebp, edi
13247
                add     eax, edx
13248
                ror     ebp, 7
13249
                add     ebp, eax
13250
                mov     eax, [esp+18h]
13251
                mov     [esp+1Ch], ebp
13252
                mov     ebx, [esp+8]
13253
                mov     ecx, [esp+0Ch]
13254
                ror     eax, 0Bh
13255
                xor     ebx, ecx
13256
                mov     edi, [esp]
13257
                and     ebx, [esp+4]
13258
                and     edi, [esp+10h]
13259
                xor     ecx, ebx
13260
                and     ebp, [esp+14h]
13261
                xor     edi, ecx
13262
                mov     edx, [esi+4]
13263
                xor     ebp, edi
13264
                add     eax, edx
13265
                ror     ebp, 7
13266
                add     ebp, eax
13267
                mov     eax, [esp+14h]
13268
                mov     [esp+18h], ebp
13269
                mov     ebx, [esp+4]
13270
                mov     ecx, [esp+8]
13271
                ror     eax, 0Bh
13272
                xor     ebx, ecx
13273
                mov     edi, [esp+1Ch]
13274
                and     ebx, [esp]
13275
                and     edi, [esp+0Ch]
13276
                xor     ecx, ebx
13277
                and     ebp, [esp+10h]
13278
                xor     edi, ecx
13279
                mov     edx, [esi+8]
13280
                xor     ebp, edi
13281
                add     eax, edx
13282
                ror     ebp, 7
13283
                add     ebp, eax
13284
                mov     eax, [esp+10h]
13285
                mov     [esp+14h], ebp
13286
                mov     ebx, [esp]
13287
                mov     ecx, [esp+4]
13288
                ror     eax, 0Bh
13289
                xor     ebx, ecx
13290
                mov     edi, [esp+18h]
13291
                and     ebx, [esp+1Ch]
13292
                and     edi, [esp+8]
13293
                xor     ecx, ebx
13294
                and     ebp, [esp+0Ch]
13295
                xor     edi, ecx
13296
                mov     edx, [esi+0Ch]
13297
                xor     ebp, edi
13298
                add     eax, edx
13299
                ror     ebp, 7
13300
                add     ebp, eax
13301
                mov     eax, [esp+0Ch]
13302
                mov     [esp+10h], ebp
13303
                mov     ebx, [esp+1Ch]
13304
                mov     ecx, [esp]
13305
                ror     eax, 0Bh
13306
                xor     ebx, ecx
13307
                mov     edi, [esp+14h]
13308
                and     ebx, [esp+18h]
13309
                and     edi, [esp+4]
13310
                xor     ecx, ebx
13311
                and     ebp, [esp+8]
13312
                xor     edi, ecx
13313
                mov     edx, [esi+10h]
13314
                xor     ebp, edi
13315
                add     eax, edx
13316
                ror     ebp, 7
13317
                add     ebp, eax
13318
                mov     eax, [esp+8]
13319
                mov     [esp+0Ch], ebp
13320
                mov     ebx, [esp+18h]
13321
                mov     ecx, [esp+1Ch]
13322
                ror     eax, 0Bh
13323
                xor     ebx, ecx
13324
                mov     edi, [esp+10h]
13325
                and     ebx, [esp+14h]
13326
                and     edi, [esp]
13327
                xor     ecx, ebx
13328
                and     ebp, [esp+4]
13329
                xor     edi, ecx
13330
                mov     edx, [esi+14h]
13331
                xor     ebp, edi
13332
                add     eax, edx
13333
                ror     ebp, 7
13334
                add     ebp, eax
13335
                mov     eax, [esp+4]
13336
                mov     [esp+8], ebp
13337
                mov     ebx, [esp+14h]
13338
                mov     ecx, [esp+18h]
13339
                ror     eax, 0Bh
13340
                xor     ebx, ecx
13341
                mov     edi, [esp+0Ch]
13342
                and     ebx, [esp+10h]
13343
                and     edi, [esp+1Ch]
13344
                xor     ecx, ebx
13345
                and     ebp, [esp]
13346
                xor     edi, ecx
13347
                mov     edx, [esi+18h]
13348
                xor     ebp, edi
13349
                add     eax, edx
13350
                ror     ebp, 7
13351
                add     ebp, eax
13352
                mov     eax, [esp]
13353
                mov     [esp+4], ebp
13354
                mov     ebx, [esp+10h]
13355
                mov     ecx, [esp+14h]
13356
                ror     eax, 0Bh
13357
                xor     ebx, ecx
13358
                mov     edi, [esp+8]
13359
                and     ebx, [esp+0Ch]
13360
                and     edi, [esp+18h]
13361
                xor     ecx, ebx
13362
                and     ebp, [esp+1Ch]
13363
                xor     edi, ecx
13364
                mov     edx, [esi+1Ch]
13365
                xor     ebp, edi
13366
                add     eax, edx
13367
                ror     ebp, 7
13368
                add     ebp, eax
13369
                mov     eax, [esp+1Ch]
13370
                mov     [esp], ebp
13371
                mov     ebx, [esp+0Ch]
13372
                mov     ecx, [esp+10h]
13373
                ror     eax, 0Bh
13374
                xor     ebx, ecx
13375
                mov     edi, [esp+4]
13376
                and     ebx, [esp+8]
13377
                and     edi, [esp+14h]
13378
                xor     ecx, ebx
13379
                and     ebp, [esp+18h]
13380
                xor     edi, ecx
13381
                mov     edx, [esi+20h]
13382
                xor     ebp, edi
13383
                add     eax, edx
13384
                ror     ebp, 7
13385
                add     ebp, eax
13386
                mov     eax, [esp+18h]
13387
                mov     [esp+1Ch], ebp
13388
                mov     ebx, [esp+8]
13389
                mov     ecx, [esp+0Ch]
13390
                ror     eax, 0Bh
13391
                xor     ebx, ecx
13392
                mov     edi, [esp]
13393
                and     ebx, [esp+4]
13394
                and     edi, [esp+10h]
13395
                xor     ecx, ebx
13396
                and     ebp, [esp+14h]
13397
                xor     edi, ecx
13398
                mov     edx, [esi+24h]
13399
                xor     ebp, edi
13400
                add     eax, edx
13401
                ror     ebp, 7
13402
                add     ebp, eax
13403
                mov     eax, [esp+14h]
13404
                mov     [esp+18h], ebp
13405
                mov     ebx, [esp+4]
13406
                mov     ecx, [esp+8]
13407
                ror     eax, 0Bh
13408
                xor     ebx, ecx
13409
                mov     edi, [esp+1Ch]
13410
                and     ebx, [esp]
13411
                and     edi, [esp+0Ch]
13412
                xor     ecx, ebx
13413
                and     ebp, [esp+10h]
13414
                xor     edi, ecx
13415
                mov     edx, [esi+28h]
13416
                xor     ebp, edi
13417
                add     eax, edx
13418
                ror     ebp, 7
13419
                add     ebp, eax
13420
                mov     eax, [esp+10h]
13421
                mov     [esp+14h], ebp
13422
                mov     ebx, [esp]
13423
                mov     ecx, [esp+4]
13424
                ror     eax, 0Bh
13425
                xor     ebx, ecx
13426
                mov     edi, [esp+18h]
13427
                and     ebx, [esp+1Ch]
13428
                and     edi, [esp+8]
13429
                xor     ecx, ebx
13430
                and     ebp, [esp+0Ch]
13431
                xor     edi, ecx
13432
                mov     edx, [esi+2Ch]
13433
                xor     ebp, edi
13434
                add     eax, edx
13435
                ror     ebp, 7
13436
                add     ebp, eax
13437
                mov     eax, [esp+0Ch]
13438
                mov     [esp+10h], ebp
13439
                mov     ebx, [esp+1Ch]
13440
                mov     ecx, [esp]
13441
                ror     eax, 0Bh
13442
                xor     ebx, ecx
13443
                mov     edi, [esp+14h]
13444
                and     ebx, [esp+18h]
13445
                and     edi, [esp+4]
13446
                xor     ecx, ebx
13447
                and     ebp, [esp+8]
13448
                xor     edi, ecx
13449
                mov     edx, [esi+30h]
13450
                xor     ebp, edi
13451
                add     eax, edx
13452
                ror     ebp, 7
13453
                add     ebp, eax
13454
                mov     eax, [esp+8]
13455
                mov     [esp+0Ch], ebp
13456
                mov     ebx, [esp+18h]
13457
                mov     ecx, [esp+1Ch]
13458
                ror     eax, 0Bh
13459
                xor     ebx, ecx
13460
                mov     edi, [esp+10h]
13461
                and     ebx, [esp+14h]
13462
                and     edi, [esp]
13463
                xor     ecx, ebx
13464
                and     ebp, [esp+4]
13465
                xor     edi, ecx
13466
                mov     edx, [esi+34h]
13467
                xor     ebp, edi
13468
                add     eax, edx
13469
                ror     ebp, 7
13470
                add     ebp, eax
13471
                mov     eax, [esp+4]
13472
                mov     [esp+8], ebp
13473
                mov     ebx, [esp+14h]
13474
                mov     ecx, [esp+18h]
13475
                ror     eax, 0Bh
13476
                xor     ebx, ecx
13477
                mov     edi, [esp+0Ch]
13478
                and     ebx, [esp+10h]
13479
                and     edi, [esp+1Ch]
13480
                xor     ecx, ebx
13481
                and     ebp, [esp]
13482
                xor     edi, ecx
13483
                mov     edx, [esi+38h]
13484
                xor     ebp, edi
13485
                add     eax, edx
13486
                ror     ebp, 7
13487
                add     ebp, eax
13488
                mov     eax, [esp]
13489
                mov     [esp+4], ebp
13490
                mov     ebx, [esp+10h]
13491
                mov     ecx, [esp+14h]
13492
                ror     eax, 0Bh
13493
                xor     ebx, ecx
13494
                mov     edi, [esp+8]
13495
                and     ebx, [esp+0Ch]
13496
                and     edi, [esp+18h]
13497
                xor     ecx, ebx
13498
                and     ebp, [esp+1Ch]
13499
                xor     edi, ecx
13500
                mov     edx, [esi+3Ch]
13501
                xor     ebp, edi
13502
                add     eax, edx
13503
                ror     ebp, 7
13504
                add     ebp, eax
13505
                mov     eax, [esp+1Ch]
13506
                mov     [esp], ebp
13507
                mov     ebx, [esp+0Ch]
13508
                mov     ecx, [esp+10h]
13509
                ror     eax, 0Bh
13510
                xor     ebx, ecx
13511
                mov     edi, [esp+4]
13512
                and     ebx, [esp+8]
13513
                and     edi, [esp+14h]
13514
                xor     ecx, ebx
13515
                and     ebp, [esp+18h]
13516
                xor     edi, ecx
13517
                mov     edx, [esi+40h]
13518
                xor     ebp, edi
13519
                add     eax, edx
13520
                ror     ebp, 7
13521
                add     ebp, eax
13522
                mov     eax, [esp+18h]
13523
                mov     [esp+1Ch], ebp
13524
                mov     ebx, [esp+8]
13525
                mov     ecx, [esp+0Ch]
13526
                ror     eax, 0Bh
13527
                xor     ebx, ecx
13528
                mov     edi, [esp]
13529
                and     ebx, [esp+4]
13530
                and     edi, [esp+10h]
13531
                xor     ecx, ebx
13532
                and     ebp, [esp+14h]
13533
                xor     edi, ecx
13534
                mov     edx, [esi+44h]
13535
                xor     ebp, edi
13536
                add     eax, edx
13537
                ror     ebp, 7
13538
                add     ebp, eax
13539
                mov     eax, [esp+14h]
13540
                mov     [esp+18h], ebp
13541
                mov     ebx, [esp+4]
13542
                mov     ecx, [esp+8]
13543
                ror     eax, 0Bh
13544
                xor     ebx, ecx
13545
                mov     edi, [esp+1Ch]
13546
                and     ebx, [esp]
13547
                and     edi, [esp+0Ch]
13548
                xor     ecx, ebx
13549
                and     ebp, [esp+10h]
13550
                xor     edi, ecx
13551
                mov     edx, [esi+48h]
13552
                xor     ebp, edi
13553
                add     eax, edx
13554
                ror     ebp, 7
13555
                add     ebp, eax
13556
                mov     eax, [esp+10h]
13557
                mov     [esp+14h], ebp
13558
                mov     ebx, [esp]
13559
                mov     ecx, [esp+4]
13560
                ror     eax, 0Bh
13561
                xor     ebx, ecx
13562
                mov     edi, [esp+18h]
13563
                and     ebx, [esp+1Ch]
13564
                and     edi, [esp+8]
13565
                xor     ecx, ebx
13566
                and     ebp, [esp+0Ch]
13567
                xor     edi, ecx
13568
                mov     edx, [esi+4Ch]
13569
                xor     ebp, edi
13570
                add     eax, edx
13571
                ror     ebp, 7
13572
                add     ebp, eax
13573
                mov     eax, [esp+0Ch]
13574
                mov     [esp+10h], ebp
13575
                mov     ebx, [esp+1Ch]
13576
                mov     ecx, [esp]
13577
                ror     eax, 0Bh
13578
                xor     ebx, ecx
13579
                mov     edi, [esp+14h]
13580
                and     ebx, [esp+18h]
13581
                and     edi, [esp+4]
13582
                xor     ecx, ebx
13583
                and     ebp, [esp+8]
13584
                xor     edi, ecx
13585
                mov     edx, [esi+50h]
13586
                xor     ebp, edi
13587
                add     eax, edx
13588
                ror     ebp, 7
13589
                add     ebp, eax
13590
                mov     eax, [esp+8]
13591
                mov     [esp+0Ch], ebp
13592
                mov     ebx, [esp+18h]
13593
                mov     ecx, [esp+1Ch]
13594
                ror     eax, 0Bh
13595
                xor     ebx, ecx
13596
                mov     edi, [esp+10h]
13597
                and     ebx, [esp+14h]
13598
                and     edi, [esp]
13599
                xor     ecx, ebx
13600
                and     ebp, [esp+4]
13601
                xor     edi, ecx
13602
                mov     edx, [esi+54h]
13603
                xor     ebp, edi
13604
                add     eax, edx
13605
                ror     ebp, 7
13606
                add     ebp, eax
13607
                mov     eax, [esp+4]
13608
                mov     [esp+8], ebp
13609
                mov     ebx, [esp+14h]
13610
                mov     ecx, [esp+18h]
13611
                ror     eax, 0Bh
13612
                xor     ebx, ecx
13613
                mov     edi, [esp+0Ch]
13614
                and     ebx, [esp+10h]
13615
                and     edi, [esp+1Ch]
13616
                xor     ecx, ebx
13617
                and     ebp, [esp]
13618
                xor     edi, ecx
13619
                mov     edx, [esi+58h]
13620
                xor     ebp, edi
13621
                add     eax, edx
13622
                ror     ebp, 7
13623
                add     ebp, eax
13624
                mov     eax, [esp]
13625
                mov     [esp+4], ebp
13626
                mov     ebx, [esp+10h]
13627
                mov     ecx, [esp+14h]
13628
                ror     eax, 0Bh
13629
                xor     ebx, ecx
13630
                mov     edi, [esp+8]
13631
                and     ebx, [esp+0Ch]
13632
                and     edi, [esp+18h]
13633
                xor     ecx, ebx
13634
                and     ebp, [esp+1Ch]
13635
                xor     edi, ecx
13636
                mov     edx, [esi+5Ch]
13637
                xor     ebp, edi
13638
                add     eax, edx
13639
                ror     ebp, 7
13640
                add     ebp, eax
13641
                mov     eax, [esp+1Ch]
13642
                mov     [esp], ebp
13643
                mov     ebx, [esp+0Ch]
13644
                mov     ecx, [esp+10h]
13645
                ror     eax, 0Bh
13646
                xor     ebx, ecx
13647
                mov     edi, [esp+4]
13648
                and     ebx, [esp+8]
13649
                and     edi, [esp+14h]
13650
                xor     ecx, ebx
13651
                and     ebp, [esp+18h]
13652
                xor     edi, ecx
13653
                mov     edx, [esi+60h]
13654
                xor     ebp, edi
13655
                add     eax, edx
13656
                ror     ebp, 7
13657
                add     ebp, eax
13658
                mov     eax, [esp+18h]
13659
                mov     [esp+1Ch], ebp
13660
                mov     ebx, [esp+8]
13661
                mov     ecx, [esp+0Ch]
13662
                ror     eax, 0Bh
13663
                xor     ebx, ecx
13664
                mov     edi, [esp]
13665
                and     ebx, [esp+4]
13666
                and     edi, [esp+10h]
13667
                xor     ecx, ebx
13668
                and     ebp, [esp+14h]
13669
                xor     edi, ecx
13670
                mov     edx, [esi+64h]
13671
                xor     ebp, edi
13672
                add     eax, edx
13673
                ror     ebp, 7
13674
                add     ebp, eax
13675
                mov     eax, [esp+14h]
13676
                mov     [esp+18h], ebp
13677
                mov     ebx, [esp+4]
13678
                mov     ecx, [esp+8]
13679
                ror     eax, 0Bh
13680
                xor     ebx, ecx
13681
                mov     edi, [esp+1Ch]
13682
                and     ebx, [esp]
13683
                and     edi, [esp+0Ch]
13684
                xor     ecx, ebx
13685
                and     ebp, [esp+10h]
13686
                xor     edi, ecx
13687
                mov     edx, [esi+68h]
13688
                xor     ebp, edi
13689
                add     eax, edx
13690
                ror     ebp, 7
13691
                add     ebp, eax
13692
                mov     eax, [esp+10h]
13693
                mov     [esp+14h], ebp
13694
                mov     ebx, [esp]
13695
                mov     ecx, [esp+4]
13696
                ror     eax, 0Bh
13697
                xor     ebx, ecx
13698
                mov     edi, [esp+18h]
13699
                and     ebx, [esp+1Ch]
13700
                and     edi, [esp+8]
13701
                xor     ecx, ebx
13702
                and     ebp, [esp+0Ch]
13703
                xor     edi, ecx
13704
                mov     edx, [esi+6Ch]
13705
                xor     ebp, edi
13706
                add     eax, edx
13707
                ror     ebp, 7
13708
                add     ebp, eax
13709
                mov     eax, [esp+0Ch]
13710
                mov     [esp+10h], ebp
13711
                mov     ebx, [esp+1Ch]
13712
                mov     ecx, [esp]
13713
                ror     eax, 0Bh
13714
                xor     ebx, ecx
13715
                mov     edi, [esp+14h]
13716
                and     ebx, [esp+18h]
13717
                and     edi, [esp+4]
13718
                xor     ecx, ebx
13719
                and     ebp, [esp+8]
13720
                xor     edi, ecx
13721
                mov     edx, [esi+70h]
13722
                xor     ebp, edi
13723
                add     eax, edx
13724
                ror     ebp, 7
13725
                add     ebp, eax
13726
                mov     eax, [esp+8]
13727
                mov     [esp+0Ch], ebp
13728
                mov     ebx, [esp+18h]
13729
                mov     ecx, [esp+1Ch]
13730
                ror     eax, 0Bh
13731
                xor     ebx, ecx
13732
                mov     edi, [esp+10h]
13733
                and     ebx, [esp+14h]
13734
                and     edi, [esp]
13735
                xor     ecx, ebx
13736
                and     ebp, [esp+4]
13737
                xor     edi, ecx
13738
                mov     edx, [esi+74h]
13739
                xor     ebp, edi
13740
                add     eax, edx
13741
                ror     ebp, 7
13742
                add     ebp, eax
13743
                mov     eax, [esp+4]
13744
                mov     [esp+8], ebp
13745
                mov     ebx, [esp+14h]
13746
                mov     ecx, [esp+18h]
13747
                ror     eax, 0Bh
13748
                xor     ebx, ecx
13749
                mov     edi, [esp+0Ch]
13750
                and     ebx, [esp+10h]
13751
                and     edi, [esp+1Ch]
13752
                xor     ecx, ebx
13753
                and     ebp, [esp]
13754
                xor     edi, ecx
13755
                mov     edx, [esi+78h]
13756
                xor     ebp, edi
13757
                add     eax, edx
13758
                ror     ebp, 7
13759
                add     ebp, eax
13760
                mov     eax, [esp]
13761
                mov     [esp+4], ebp
13762
                mov     ebx, [esp+10h]
13763
                mov     ecx, [esp+14h]
13764
                ror     eax, 0Bh
13765
                xor     ebx, ecx
13766
                mov     edi, [esp+8]
13767
                and     ebx, [esp+0Ch]
13768
                and     edi, [esp+18h]
13769
                xor     ecx, ebx
13770
                and     ebp, [esp+1Ch]
13771
                xor     edi, ecx
13772
                mov     edx, [esi+7Ch]
13773
                xor     ebp, edi
13774
                add     eax, edx
13775
                ror     ebp, 7
13776
                add     ebp, eax
13777
                mov     eax, [esp+1Ch]
13778
                mov     [esp], ebp
13779
                mov     ebp, [esp]
13780
                mov     ebx, [esp+4]
13781
                mov     edi, [esp+8]
13782
                xor     ebp, 0FFFFFFFFh
13783
                mov     ecx, [esp+0Ch]
13784
                and     ebx, edi
13785
                mov     edx, [esp+18h]
13786
                and     ebp, ecx
13787
                xor     ebx, [esp+10h]
13788
                xor     ebp, edx
13789
                xor     ecx, edi
13790
                xor     ebx, ebp
13791
                and     ecx, [esp+4]
13792
                and     ebx, [esp+14h]
13793
                ror     eax, 0Bh
13794
                xor     ecx, edx
13795
                mov     ebp, [esi+14h]
13796
                xor     ecx, ebx
13797
                and     edi, [esp]
13798
                xor     ecx, edi
13799
                lea     ebp, [eax+ebp+452821E6h]
13800
                ror     ecx, 7
13801
                add     ebp, ecx
13802
                mov     eax, [esp+18h]
13803
                mov     [esp+1Ch], ebp
13804
                mov     ebx, [esp]
13805
                mov     edi, [esp+4]
13806
                xor     ebp, 0FFFFFFFFh
13807
                mov     ecx, [esp+8]
13808
                and     ebx, edi
13809
                mov     edx, [esp+14h]
13810
                and     ebp, ecx
13811
                xor     ebx, [esp+0Ch]
13812
                xor     ebp, edx
13813
                xor     ecx, edi
13814
                xor     ebx, ebp
13815
                and     ecx, [esp]
13816
                and     ebx, [esp+10h]
13817
                ror     eax, 0Bh
13818
                xor     ecx, edx
13819
                mov     ebp, [esi+38h]
13820
                xor     ecx, ebx
13821
                and     edi, [esp+1Ch]
13822
                xor     ecx, edi
13823
                lea     ebp, [eax+ebp+38D01377h]
13824
                ror     ecx, 7
13825
                add     ebp, ecx
13826
                mov     eax, [esp+14h]
13827
                mov     [esp+18h], ebp
13828
                mov     ebx, [esp+1Ch]
13829
                mov     edi, [esp]
13830
                xor     ebp, 0FFFFFFFFh
13831
                mov     ecx, [esp+4]
13832
                and     ebx, edi
13833
                mov     edx, [esp+10h]
13834
                and     ebp, ecx
13835
                xor     ebx, [esp+8]
13836
                xor     ebp, edx
13837
                xor     ecx, edi
13838
                xor     ebx, ebp
13839
                and     ecx, [esp+1Ch]
13840
                and     ebx, [esp+0Ch]
13841
                ror     eax, 0Bh
13842
                xor     ecx, edx
13843
                mov     ebp, [esi+68h]
13844
                xor     ecx, ebx
13845
                and     edi, [esp+18h]
13846
                xor     ecx, edi
13847
                lea     ebp, [eax+ebp-41AB9931h]
13848
                ror     ecx, 7
13849
                add     ebp, ecx
13850
                mov     eax, [esp+10h]
13851
                mov     [esp+14h], ebp
13852
                mov     ebx, [esp+18h]
13853
                mov     edi, [esp+1Ch]
13854
                xor     ebp, 0FFFFFFFFh
13855
                mov     ecx, [esp]
13856
                and     ebx, edi
13857
                mov     edx, [esp+0Ch]
13858
                and     ebp, ecx
13859
                xor     ebx, [esp+4]
13860
                xor     ebp, edx
13861
                xor     ecx, edi
13862
                xor     ebx, ebp
13863
                and     ecx, [esp+18h]
13864
                and     ebx, [esp+8]
13865
                ror     eax, 0Bh
13866
                xor     ecx, edx
13867
                mov     ebp, [esi+48h]
13868
                xor     ecx, ebx
13869
                and     edi, [esp+14h]
13870
                xor     ecx, edi
13871
                lea     ebp, [eax+ebp+34E90C6Ch]
13872
                ror     ecx, 7
13873
                add     ebp, ecx
13874
                mov     eax, [esp+0Ch]
13875
                mov     [esp+10h], ebp
13876
                mov     ebx, [esp+14h]
13877
                mov     edi, [esp+18h]
13878
                xor     ebp, 0FFFFFFFFh
13879
                mov     ecx, [esp+1Ch]
13880
                and     ebx, edi
13881
                mov     edx, [esp+8]
13882
                and     ebp, ecx
13883
                xor     ebx, [esp]
13884
                xor     ebp, edx
13885
                xor     ecx, edi
13886
                xor     ebx, ebp
13887
                and     ecx, [esp+14h]
13888
                and     ebx, [esp+4]
13889
                ror     eax, 0Bh
13890
                xor     ecx, edx
13891
                mov     ebp, [esi+2Ch]
13892
                xor     ecx, ebx
13893
                and     edi, [esp+10h]
13894
                xor     ecx, edi
13895
                lea     ebp, [eax+ebp-3F53D649h]
13896
                ror     ecx, 7
13897
                add     ebp, ecx
13898
                mov     eax, [esp+8]
13899
                mov     [esp+0Ch], ebp
13900
                mov     ebx, [esp+10h]
13901
                mov     edi, [esp+14h]
13902
                xor     ebp, 0FFFFFFFFh
13903
                mov     ecx, [esp+18h]
13904
                and     ebx, edi
13905
                mov     edx, [esp+4]
13906
                and     ebp, ecx
13907
                xor     ebx, [esp+1Ch]
13908
                xor     ebp, edx
13909
                xor     ecx, edi
13910
                xor     ebx, ebp
13911
                and     ecx, [esp+10h]
13912
                and     ebx, [esp]
13913
                ror     eax, 0Bh
13914
                xor     ecx, edx
13915
                mov     ebp, [esi+70h]
13916
                xor     ecx, ebx
13917
                and     edi, [esp+0Ch]
13918
                xor     ecx, edi
13919
                lea     ebp, [eax+ebp-3683AF23h]
13920
                ror     ecx, 7
13921
                add     ebp, ecx
13922
                mov     eax, [esp+4]
13923
                mov     [esp+8], ebp
13924
                mov     ebx, [esp+0Ch]
13925
                mov     edi, [esp+10h]
13926
                xor     ebp, 0FFFFFFFFh
13927
                mov     ecx, [esp+14h]
13928
                and     ebx, edi
13929
                mov     edx, [esp]
13930
                and     ebp, ecx
13931
                xor     ebx, [esp+18h]
13932
                xor     ebp, edx
13933
                xor     ecx, edi
13934
                xor     ebx, ebp
13935
                and     ecx, [esp+0Ch]
13936
                and     ebx, [esp+1Ch]
13937
                ror     eax, 0Bh
13938
                xor     ecx, edx
13939
                mov     ebp, [esi+1Ch]
13940
                xor     ecx, ebx
13941
                and     edi, [esp+8]
13942
                xor     ecx, edi
13943
                lea     ebp, [eax+ebp+3F84D5B5h]
13944
                ror     ecx, 7
13945
                add     ebp, ecx
13946
                mov     eax, [esp]
13947
                mov     [esp+4], ebp
13948
                mov     ebx, [esp+8]
13949
                mov     edi, [esp+0Ch]
13950
                xor     ebp, 0FFFFFFFFh
13951
                mov     ecx, [esp+10h]
13952
                and     ebx, edi
13953
                mov     edx, [esp+1Ch]
13954
                and     ebp, ecx
13955
                xor     ebx, [esp+14h]
13956
                xor     ebp, edx
13957
                xor     ecx, edi
13958
                xor     ebx, ebp
13959
                and     ecx, [esp+8]
13960
                and     ebx, [esp+18h]
13961
                ror     eax, 0Bh
13962
                xor     ecx, edx
13963
                mov     ebp, [esi+40h]
13964
                xor     ecx, ebx
13965
                and     edi, [esp+4]
13966
                xor     ecx, edi
13967
                lea     ebp, [eax+ebp-4AB8F6E9h]
13968
                ror     ecx, 7
13969
                add     ebp, ecx
13970
                mov     eax, [esp+1Ch]
13971
                mov     [esp], ebp
13972
                mov     ebx, [esp+4]
13973
                mov     edi, [esp+8]
13974
                xor     ebp, 0FFFFFFFFh
13975
                mov     ecx, [esp+0Ch]
13976
                and     ebx, edi
13977
                mov     edx, [esp+18h]
13978
                and     ebp, ecx
13979
                xor     ebx, [esp+10h]
13980
                xor     ebp, edx
13981
                xor     ecx, edi
13982
                xor     ebx, ebp
13983
                and     ecx, [esp+4]
13984
                and     ebx, [esp+14h]
13985
                ror     eax, 0Bh
13986
                xor     ecx, edx
13987
                mov     ebp, [esi]
13988
                xor     ecx, ebx
13989
                and     edi, [esp]
13990
                xor     ecx, edi
13991
                lea     ebp, [eax+ebp-6DE92A27h]
13992
                ror     ecx, 7
13993
                add     ebp, ecx
13994
                mov     eax, [esp+18h]
13995
                mov     [esp+1Ch], ebp
13996
                mov     ebx, [esp]
13997
                mov     edi, [esp+4]
13998
                xor     ebp, 0FFFFFFFFh
13999
                mov     ecx, [esp+8]
14000
                and     ebx, edi
14001
                mov     edx, [esp+14h]
14002
                and     ebp, ecx
14003
                xor     ebx, [esp+0Ch]
14004
                xor     ebp, edx
14005
                xor     ecx, edi
14006
                xor     ebx, ebp
14007
                and     ecx, [esp]
14008
                and     ebx, [esp+10h]
14009
                ror     eax, 0Bh
14010
                xor     ecx, edx
14011
                mov     ebp, [esi+5Ch]
14012
                xor     ecx, ebx
14013
                and     edi, [esp+1Ch]
14014
                xor     ecx, edi
14015
                lea     ebp, [eax+ebp-768604E5h]
14016
                ror     ecx, 7
14017
                add     ebp, ecx
14018
                mov     eax, [esp+14h]
14019
                mov     [esp+18h], ebp
14020
                mov     ebx, [esp+1Ch]
14021
                mov     edi, [esp]
14022
                xor     ebp, 0FFFFFFFFh
14023
                mov     ecx, [esp+4]
14024
                and     ebx, edi
14025
                mov     edx, [esp+10h]
14026
                and     ebp, ecx
14027
                xor     ebx, [esp+8]
14028
                xor     ebp, edx
14029
                xor     ecx, edi
14030
                xor     ebx, ebp
14031
                and     ecx, [esp+1Ch]
14032
                and     ebx, [esp+0Ch]
14033
                ror     eax, 0Bh
14034
                xor     ecx, edx
14035
                mov     ebp, [esi+50h]
14036
                xor     ecx, ebx
14037
                and     edi, [esp+18h]
14038
                xor     ecx, edi
14039
                lea     ebp, [eax+ebp-2ECEF45Ah]
14040
                ror     ecx, 7
14041
                add     ebp, ecx
14042
                mov     eax, [esp+10h]
14043
                mov     [esp+14h], ebp
14044
                mov     ebx, [esp+18h]
14045
                mov     edi, [esp+1Ch]
14046
                xor     ebp, 0FFFFFFFFh
14047
                mov     ecx, [esp]
14048
                and     ebx, edi
14049
                mov     edx, [esp+0Ch]
14050
                and     ebp, ecx
14051
                xor     ebx, [esp+4]
14052
                xor     ebp, edx
14053
                xor     ecx, edi
14054
                xor     ebx, ebp
14055
                and     ecx, [esp+18h]
14056
                and     ebx, [esp+8]
14057
                ror     eax, 0Bh
14058
                xor     ecx, edx
14059
                mov     ebp, [esi+58h]
14060
                xor     ecx, ebx
14061
                and     edi, [esp+14h]
14062
                xor     ecx, edi
14063
                lea     ebp, [eax+ebp-67204A54h]
14064
                ror     ecx, 7
14065
                add     ebp, ecx
14066
                mov     eax, [esp+0Ch]
14067
                mov     [esp+10h], ebp
14068
                mov     ebx, [esp+14h]
14069
                mov     edi, [esp+18h]
14070
                xor     ebp, 0FFFFFFFFh
14071
                mov     ecx, [esp+1Ch]
14072
                and     ebx, edi
14073
                mov     edx, [esp+8]
14074
                and     ebp, ecx
14075
                xor     ebx, [esp]
14076
                xor     ebp, edx
14077
                xor     ecx, edi
14078
                xor     ebx, ebp
14079
                and     ecx, [esp+14h]
14080
                and     ebx, [esp+4]
14081
                ror     eax, 0Bh
14082
                xor     ecx, edx
14083
                mov     ebp, [esi+4]
14084
                xor     ecx, ebx
14085
                and     edi, [esp+10h]
14086
                xor     ecx, edi
14087
                lea     ebp, [eax+ebp+2FFD72DBh]
14088
                ror     ecx, 7
14089
                add     ebp, ecx
14090
                mov     eax, [esp+8]
14091
                mov     [esp+0Ch], ebp
14092
                mov     ebx, [esp+10h]
14093
                mov     edi, [esp+14h]
14094
                xor     ebp, 0FFFFFFFFh
14095
                mov     ecx, [esp+18h]
14096
                and     ebx, edi
14097
                mov     edx, [esp+4]
14098
                and     ebp, ecx
14099
                xor     ebx, [esp+1Ch]
14100
                xor     ebp, edx
14101
                xor     ecx, edi
14102
                xor     ebx, ebp
14103
                and     ecx, [esp+10h]
14104
                and     ebx, [esp]
14105
                ror     eax, 0Bh
14106
                xor     ecx, edx
14107
                mov     ebp, [esi+28h]
14108
                xor     ecx, ebx
14109
                and     edi, [esp+0Ch]
14110
                xor     ecx, edi
14111
                lea     ebp, [eax+ebp-2FE52049h]
14112
                ror     ecx, 7
14113
                add     ebp, ecx
14114
                mov     eax, [esp+4]
14115
                mov     [esp+8], ebp
14116
                mov     ebx, [esp+0Ch]
14117
                mov     edi, [esp+10h]
14118
                xor     ebp, 0FFFFFFFFh
14119
                mov     ecx, [esp+14h]
14120
                and     ebx, edi
14121
                mov     edx, [esp]
14122
                and     ebp, ecx
14123
                xor     ebx, [esp+18h]
14124
                xor     ebp, edx
14125
                xor     ecx, edi
14126
                xor     ebx, ebp
14127
                and     ecx, [esp+0Ch]
14128
                and     ebx, [esp+1Ch]
14129
                ror     eax, 0Bh
14130
                xor     ecx, edx
14131
                mov     ebp, [esi+10h]
14132
                xor     ecx, ebx
14133
                and     edi, [esp+8]
14134
                xor     ecx, edi
14135
                lea     ebp, [eax+ebp-471E5013h]
14136
                ror     ecx, 7
14137
                add     ebp, ecx
14138
                mov     eax, [esp]
14139
                mov     [esp+4], ebp
14140
                mov     ebx, [esp+8]
14141
                mov     edi, [esp+0Ch]
14142
                xor     ebp, 0FFFFFFFFh
14143
                mov     ecx, [esp+10h]
14144
                and     ebx, edi
14145
                mov     edx, [esp+1Ch]
14146
                and     ebp, ecx
14147
                xor     ebx, [esp+14h]
14148
                xor     ebp, edx
14149
                xor     ecx, edi
14150
                xor     ebx, ebp
14151
                and     ecx, [esp+8]
14152
                and     ebx, [esp+18h]
14153
                ror     eax, 0Bh
14154
                xor     ecx, edx
14155
                mov     ebp, [esi+20h]
14156
                xor     ecx, ebx
14157
                and     edi, [esp+4]
14158
                xor     ecx, edi
14159
                lea     ebp, [eax+ebp+6A267E96h]
14160
                ror     ecx, 7
14161
                add     ebp, ecx
14162
                mov     eax, [esp+1Ch]
14163
                mov     [esp], ebp
14164
                mov     ebx, [esp+4]
14165
                mov     edi, [esp+8]
14166
                xor     ebp, 0FFFFFFFFh
14167
                mov     ecx, [esp+0Ch]
14168
                and     ebx, edi
14169
                mov     edx, [esp+18h]
14170
                and     ebp, ecx
14171
                xor     ebx, [esp+10h]
14172
                xor     ebp, edx
14173
                xor     ecx, edi
14174
                xor     ebx, ebp
14175
                and     ecx, [esp+4]
14176
                and     ebx, [esp+14h]
14177
                ror     eax, 0Bh
14178
                xor     ecx, edx
14179
                mov     ebp, [esi+78h]
14180
                xor     ecx, ebx
14181
                and     edi, [esp]
14182
                xor     ecx, edi
14183
                lea     ebp, [eax+ebp-45836FBBh]
14184
                ror     ecx, 7
14185
                add     ebp, ecx
14186
                mov     eax, [esp+18h]
14187
                mov     [esp+1Ch], ebp
14188
                mov     ebx, [esp]
14189
                mov     edi, [esp+4]
14190
                xor     ebp, 0FFFFFFFFh
14191
                mov     ecx, [esp+8]
14192
                and     ebx, edi
14193
                mov     edx, [esp+14h]
14194
                and     ebp, ecx
14195
                xor     ebx, [esp+0Ch]
14196
                xor     ebp, edx
14197
                xor     ecx, edi
14198
                xor     ebx, ebp
14199
                and     ecx, [esp]
14200
                and     ebx, [esp+10h]
14201
                ror     eax, 0Bh
14202
                xor     ecx, edx
14203
                mov     ebp, [esi+0Ch]
14204
                xor     ecx, ebx
14205
                and     edi, [esp+1Ch]
14206
                xor     ecx, edi
14207
                lea     ebp, [eax+ebp-0ED38067h]
14208
                ror     ecx, 7
14209
                add     ebp, ecx
14210
                mov     eax, [esp+14h]
14211
                mov     [esp+18h], ebp
14212
                mov     ebx, [esp+1Ch]
14213
                mov     edi, [esp]
14214
                xor     ebp, 0FFFFFFFFh
14215
                mov     ecx, [esp+4]
14216
                and     ebx, edi
14217
                mov     edx, [esp+10h]
14218
                and     ebp, ecx
14219
                xor     ebx, [esp+8]
14220
                xor     ebp, edx
14221
                xor     ecx, edi
14222
                xor     ebx, ebp
14223
                and     ecx, [esp+1Ch]
14224
                and     ebx, [esp+0Ch]
14225
                ror     eax, 0Bh
14226
                xor     ecx, edx
14227
                mov     ebp, [esi+54h]
14228
                xor     ecx, ebx
14229
                and     edi, [esp+18h]
14230
                xor     ecx, edi
14231
                lea     ebp, [eax+ebp+24A19947h]
14232
                ror     ecx, 7
14233
                add     ebp, ecx
14234
                mov     eax, [esp+10h]
14235
                mov     [esp+14h], ebp
14236
                mov     ebx, [esp+18h]
14237
                mov     edi, [esp+1Ch]
14238
                xor     ebp, 0FFFFFFFFh
14239
                mov     ecx, [esp]
14240
                and     ebx, edi
14241
                mov     edx, [esp+0Ch]
14242
                and     ebp, ecx
14243
                xor     ebx, [esp+4]
14244
                xor     ebp, edx
14245
                xor     ecx, edi
14246
                xor     ebx, ebp
14247
                and     ecx, [esp+18h]
14248
                and     ebx, [esp+8]
14249
                ror     eax, 0Bh
14250
                xor     ecx, edx
14251
                mov     ebp, [esi+24h]
14252
                xor     ecx, ebx
14253
                and     edi, [esp+14h]
14254
                xor     ecx, edi
14255
                lea     ebp, [eax+ebp-4C6E9309h]
14256
                ror     ecx, 7
14257
                add     ebp, ecx
14258
                mov     eax, [esp+0Ch]
14259
                mov     [esp+10h], ebp
14260
                mov     ebx, [esp+14h]
14261
                mov     edi, [esp+18h]
14262
                xor     ebp, 0FFFFFFFFh
14263
                mov     ecx, [esp+1Ch]
14264
                and     ebx, edi
14265
                mov     edx, [esp+8]
14266
                and     ebp, ecx
14267
                xor     ebx, [esp]
14268
                xor     ebp, edx
14269
                xor     ecx, edi
14270
                xor     ebx, ebp
14271
                and     ecx, [esp+14h]
14272
                and     ebx, [esp+4]
14273
                ror     eax, 0Bh
14274
                xor     ecx, edx
14275
                mov     ebp, [esi+44h]
14276
                xor     ecx, ebx
14277
                and     edi, [esp+10h]
14278
                xor     ecx, edi
14279
                lea     ebp, [eax+ebp+801F2E2h]
14280
                ror     ecx, 7
14281
                add     ebp, ecx
14282
                mov     eax, [esp+8]
14283
                mov     [esp+0Ch], ebp
14284
                mov     ebx, [esp+10h]
14285
                mov     edi, [esp+14h]
14286
                xor     ebp, 0FFFFFFFFh
14287
                mov     ecx, [esp+18h]
14288
                and     ebx, edi
14289
                mov     edx, [esp+4]
14290
                and     ebp, ecx
14291
                xor     ebx, [esp+1Ch]
14292
                xor     ebp, edx
14293
                xor     ecx, edi
14294
                xor     ebx, ebp
14295
                and     ecx, [esp+10h]
14296
                and     ebx, [esp]
14297
                ror     eax, 0Bh
14298
                xor     ecx, edx
14299
                mov     ebp, [esi+60h]
14300
                xor     ecx, ebx
14301
                and     edi, [esp+0Ch]
14302
                xor     ecx, edi
14303
                lea     ebp, [eax+ebp-7A7103EAh]
14304
                ror     ecx, 7
14305
                add     ebp, ecx
14306
                mov     eax, [esp+4]
14307
                mov     [esp+8], ebp
14308
                mov     ebx, [esp+0Ch]
14309
                mov     edi, [esp+10h]
14310
                xor     ebp, 0FFFFFFFFh
14311
                mov     ecx, [esp+14h]
14312
                and     ebx, edi
14313
                mov     edx, [esp]
14314
                and     ebp, ecx
14315
                xor     ebx, [esp+18h]
14316
                xor     ebp, edx
14317
                xor     ecx, edi
14318
                xor     ebx, ebp
14319
                and     ecx, [esp+0Ch]
14320
                and     ebx, [esp+1Ch]
14321
                ror     eax, 0Bh
14322
                xor     ecx, edx
14323
                mov     ebp, [esi+74h]
14324
                xor     ecx, ebx
14325
                and     edi, [esp+8]
14326
                xor     ecx, edi
14327
                lea     ebp, [eax+ebp+636920D8h]
14328
                ror     ecx, 7
14329
                add     ebp, ecx
14330
                mov     eax, [esp]
14331
                mov     [esp+4], ebp
14332
                mov     ebx, [esp+8]
14333
                mov     edi, [esp+0Ch]
14334
                xor     ebp, 0FFFFFFFFh
14335
                mov     ecx, [esp+10h]
14336
                and     ebx, edi
14337
                mov     edx, [esp+1Ch]
14338
                and     ebp, ecx
14339
                xor     ebx, [esp+14h]
14340
                xor     ebp, edx
14341
                xor     ecx, edi
14342
                xor     ebx, ebp
14343
                and     ecx, [esp+8]
14344
                and     ebx, [esp+18h]
14345
                ror     eax, 0Bh
14346
                xor     ecx, edx
14347
                mov     ebp, [esi+18h]
14348
                xor     ecx, ebx
14349
                and     edi, [esp+4]
14350
                xor     ecx, edi
14351
                lea     ebp, [eax+ebp+71574E69h]
14352
                ror     ecx, 7
14353
                add     ebp, ecx
14354
                mov     eax, [esp+1Ch]
14355
                mov     [esp], ebp
14356
                mov     ebx, [esp+4]
14357
                mov     edi, [esp+8]
14358
                xor     ebp, 0FFFFFFFFh
14359
                mov     ecx, [esp+0Ch]
14360
                and     ebx, edi
14361
                mov     edx, [esp+18h]
14362
                and     ebp, ecx
14363
                xor     ebx, [esp+10h]
14364
                xor     ebp, edx
14365
                xor     ecx, edi
14366
                xor     ebx, ebp
14367
                and     ecx, [esp+4]
14368
                and     ebx, [esp+14h]
14369
                ror     eax, 0Bh
14370
                xor     ecx, edx
14371
                mov     ebp, [esi+4Ch]
14372
                xor     ecx, ebx
14373
                and     edi, [esp]
14374
                xor     ecx, edi
14375
                lea     ebp, [eax+ebp-5BA7015Dh]
14376
                ror     ecx, 7
14377
                add     ebp, ecx
14378
                mov     eax, [esp+18h]
14379
                mov     [esp+1Ch], ebp
14380
                mov     ebx, [esp]
14381
                mov     edi, [esp+4]
14382
                xor     ebp, 0FFFFFFFFh
14383
                mov     ecx, [esp+8]
14384
                and     ebx, edi
14385
                mov     edx, [esp+14h]
14386
                and     ebp, ecx
14387
                xor     ebx, [esp+0Ch]
14388
                xor     ebp, edx
14389
                xor     ecx, edi
14390
                xor     ebx, ebp
14391
                and     ecx, [esp]
14392
                and     ebx, [esp+10h]
14393
                ror     eax, 0Bh
14394
                xor     ecx, edx
14395
                mov     ebp, [esi+30h]
14396
                xor     ecx, ebx
14397
                and     edi, [esp+1Ch]
14398
                xor     ecx, edi
14399
                lea     ebp, [eax+ebp-0B6CC282h]
14400
                ror     ecx, 7
14401
                add     ebp, ecx
14402
                mov     eax, [esp+14h]
14403
                mov     [esp+18h], ebp
14404
                mov     ebx, [esp+1Ch]
14405
                mov     edi, [esp]
14406
                xor     ebp, 0FFFFFFFFh
14407
                mov     ecx, [esp+4]
14408
                and     ebx, edi
14409
                mov     edx, [esp+10h]
14410
                and     ebp, ecx
14411
                xor     ebx, [esp+8]
14412
                xor     ebp, edx
14413
                xor     ecx, edi
14414
                xor     ebx, ebp
14415
                and     ecx, [esp+1Ch]
14416
                and     ebx, [esp+0Ch]
14417
                ror     eax, 0Bh
14418
                xor     ecx, edx
14419
                mov     ebp, [esi+3Ch]
14420
                xor     ecx, ebx
14421
                and     edi, [esp+18h]
14422
                xor     ecx, edi
14423
                lea     ebp, [eax+ebp+0D95748Fh]
14424
                ror     ecx, 7
14425
                add     ebp, ecx
14426
                mov     eax, [esp+10h]
14427
                mov     [esp+14h], ebp
14428
                mov     ebx, [esp+18h]
14429
                mov     edi, [esp+1Ch]
14430
                xor     ebp, 0FFFFFFFFh
14431
                mov     ecx, [esp]
14432
                and     ebx, edi
14433
                mov     edx, [esp+0Ch]
14434
                and     ebp, ecx
14435
                xor     ebx, [esp+4]
14436
                xor     ebp, edx
14437
                xor     ecx, edi
14438
                xor     ebx, ebp
14439
                and     ecx, [esp+18h]
14440
                and     ebx, [esp+8]
14441
                ror     eax, 0Bh
14442
                xor     ecx, edx
14443
                mov     ebp, [esi+34h]
14444
                xor     ecx, ebx
14445
                and     edi, [esp+14h]
14446
                xor     ecx, edi
14447
                lea     ebp, [eax+ebp+728EB658h]
14448
                ror     ecx, 7
14449
                add     ebp, ecx
14450
                mov     eax, [esp+0Ch]
14451
                mov     [esp+10h], ebp
14452
                mov     ebx, [esp+14h]
14453
                mov     edi, [esp+18h]
14454
                xor     ebp, 0FFFFFFFFh
14455
                mov     ecx, [esp+1Ch]
14456
                and     ebx, edi
14457
                mov     edx, [esp+8]
14458
                and     ebp, ecx
14459
                xor     ebx, [esp]
14460
                xor     ebp, edx
14461
                xor     ecx, edi
14462
                xor     ebx, ebp
14463
                and     ecx, [esp+14h]
14464
                and     ebx, [esp+4]
14465
                ror     eax, 0Bh
14466
                xor     ecx, edx
14467
                mov     ebp, [esi+8]
14468
                xor     ecx, ebx
14469
                and     edi, [esp+10h]
14470
                xor     ecx, edi
14471
                lea     ebp, [eax+ebp+718BCD58h]
14472
                ror     ecx, 7
14473
                add     ebp, ecx
14474
                mov     eax, [esp+8]
14475
                mov     [esp+0Ch], ebp
14476
                mov     ebx, [esp+10h]
14477
                mov     edi, [esp+14h]
14478
                xor     ebp, 0FFFFFFFFh
14479
                mov     ecx, [esp+18h]
14480
                and     ebx, edi
14481
                mov     edx, [esp+4]
14482
                and     ebp, ecx
14483
                xor     ebx, [esp+1Ch]
14484
                xor     ebp, edx
14485
                xor     ecx, edi
14486
                xor     ebx, ebp
14487
                and     ecx, [esp+10h]
14488
                and     ebx, [esp]
14489
                ror     eax, 0Bh
14490
                xor     ecx, edx
14491
                mov     ebp, [esi+64h]
14492
                xor     ecx, ebx
14493
                and     edi, [esp+0Ch]
14494
                xor     ecx, edi
14495
                lea     ebp, [eax+ebp-7DEAB512h]
14496
                ror     ecx, 7
14497
                add     ebp, ecx
14498
                mov     eax, [esp+4]
14499
                mov     [esp+8], ebp
14500
                mov     ebx, [esp+0Ch]
14501
                mov     edi, [esp+10h]
14502
                xor     ebp, 0FFFFFFFFh
14503
                mov     ecx, [esp+14h]
14504
                and     ebx, edi
14505
                mov     edx, [esp]
14506
                and     ebp, ecx
14507
                xor     ebx, [esp+18h]
14508
                xor     ebp, edx
14509
                xor     ecx, edi
14510
                xor     ebx, ebp
14511
                and     ecx, [esp+0Ch]
14512
                and     ebx, [esp+1Ch]
14513
                ror     eax, 0Bh
14514
                xor     ecx, edx
14515
                mov     ebp, [esi+7Ch]
14516
                xor     ecx, ebx
14517
                and     edi, [esp+8]
14518
                xor     ecx, edi
14519
                lea     ebp, [eax+ebp+7B54A41Dh]
14520
                ror     ecx, 7
14521
                add     ebp, ecx
14522
                mov     eax, [esp]
14523
                mov     [esp+4], ebp
14524
                mov     ebx, [esp+8]
14525
                mov     edi, [esp+0Ch]
14526
                xor     ebp, 0FFFFFFFFh
14527
                mov     ecx, [esp+10h]
14528
                and     ebx, edi
14529
                mov     edx, [esp+1Ch]
14530
                and     ebp, ecx
14531
                xor     ebx, [esp+14h]
14532
                xor     ebp, edx
14533
                xor     ecx, edi
14534
                xor     ebx, ebp
14535
                and     ecx, [esp+8]
14536
                and     ebx, [esp+18h]
14537
                ror     eax, 0Bh
14538
                xor     ecx, edx
14539
                mov     ebp, [esi+6Ch]
14540
                xor     ecx, ebx
14541
                and     edi, [esp+4]
14542
                xor     ecx, edi
14543
                lea     ebp, [eax+ebp-3DA5A64Bh]
14544
                ror     ecx, 7
14545
                add     ebp, ecx
14546
                mov     eax, [esp+1Ch]
14547
                mov     [esp], ebp
14548
                mov     ebx, [esp+10h]
14549
                mov     ecx, [esp+14h]
14550
                mov     edi, ebx
14551
                and     ebx, [esp+4]
14552
                and     edi, ecx
14553
                xor     ebx, ebp
14554
                ror     eax, 0Bh
14555
                xor     edi, ebp
14556
                mov     ebp, [esi+4Ch]
14557
                xor     edi, [esp+18h]
14558
                and     ecx, [esp+8]
14559
                and     edi, [esp+0Ch]
14560
                xor     ecx, ebx
14561
                lea     ebp, [eax+ebp-63CF2AC7h]
14562
                xor     ecx, edi
14563
                ror     ecx, 7
14564
                add     ebp, ecx
14565
                mov     eax, [esp+18h]
14566
                mov     [esp+1Ch], ebp
14567
                mov     ebx, [esp+0Ch]
14568
                mov     ecx, [esp+10h]
14569
                mov     edi, ebx
14570
                and     ebx, [esp]
14571
                and     edi, ecx
14572
                xor     ebx, ebp
14573
                ror     eax, 0Bh
14574
                xor     edi, ebp
14575
                mov     ebp, [esi+24h]
14576
                xor     edi, [esp+14h]
14577
                and     ecx, [esp+4]
14578
                and     edi, [esp+8]
14579
                xor     ecx, ebx
14580
                lea     ebp, [eax+ebp+2AF26013h]
14581
                xor     ecx, edi
14582
                ror     ecx, 7
14583
                add     ebp, ecx
14584
                mov     eax, [esp+14h]
14585
                mov     [esp+18h], ebp
14586
                mov     ebx, [esp+8]
14587
                mov     ecx, [esp+0Ch]
14588
                mov     edi, ebx
14589
                and     ebx, [esp+1Ch]
14590
                and     edi, ecx
14591
                xor     ebx, ebp
14592
                ror     eax, 0Bh
14593
                xor     edi, ebp
14594
                mov     ebp, [esi+10h]
14595
                xor     edi, [esp+10h]
14596
                and     ecx, [esp]
14597
                and     edi, [esp+4]
14598
                xor     ecx, ebx
14599
                lea     ebp, [eax+ebp-3A2E4FDDh]
14600
                xor     ecx, edi
14601
                ror     ecx, 7
14602
                add     ebp, ecx
14603
                mov     eax, [esp+10h]
14604
                mov     [esp+14h], ebp
14605
                mov     ebx, [esp+4]
14606
                mov     ecx, [esp+8]
14607
                mov     edi, ebx
14608
                and     ebx, [esp+18h]
14609
                and     edi, ecx
14610
                xor     ebx, ebp
14611
                ror     eax, 0Bh
14612
                xor     edi, ebp
14613
                mov     ebp, [esi+50h]
14614
                xor     edi, [esp+0Ch]
14615
                and     ecx, [esp+1Ch]
14616
                and     edi, [esp]
14617
                xor     ecx, ebx
14618
                lea     ebp, [eax+ebp+286085F0h]
14619
                xor     ecx, edi
14620
                ror     ecx, 7
14621
                add     ebp, ecx
14622
                mov     eax, [esp+0Ch]
14623
                mov     [esp+10h], ebp
14624
                mov     ebx, [esp]
14625
                mov     ecx, [esp+4]
14626
                mov     edi, ebx
14627
                and     ebx, [esp+14h]
14628
                and     edi, ecx
14629
                xor     ebx, ebp
14630
                ror     eax, 0Bh
14631
                xor     edi, ebp
14632
                mov     ebp, [esi+70h]
14633
                xor     edi, [esp+8]
14634
                and     ecx, [esp+18h]
14635
                and     edi, [esp+1Ch]
14636
                xor     ecx, ebx
14637
                lea     ebp, [eax+ebp-35BE86E8h]
14638
                xor     ecx, edi
14639
                ror     ecx, 7
14640
                add     ebp, ecx
14641
                mov     eax, [esp+8]
14642
                mov     [esp+0Ch], ebp
14643
                mov     ebx, [esp+1Ch]
14644
                mov     ecx, [esp]
14645
                mov     edi, ebx
14646
                and     ebx, [esp+10h]
14647
                and     edi, ecx
14648
                xor     ebx, ebp
14649
                ror     eax, 0Bh
14650
                xor     edi, ebp
14651
                mov     ebp, [esi+44h]
14652
                xor     edi, [esp+4]
14653
                and     ecx, [esp+14h]
14654
                and     edi, [esp+18h]
14655
                xor     ecx, ebx
14656
                lea     ebp, [eax+ebp-4724C711h]
14657
                xor     ecx, edi
14658
                ror     ecx, 7
14659
                add     ebp, ecx
14660
                mov     eax, [esp+4]
14661
                mov     [esp+8], ebp
14662
                mov     ebx, [esp+18h]
14663
                mov     ecx, [esp+1Ch]
14664
                mov     edi, ebx
14665
                and     ebx, [esp+0Ch]
14666
                and     edi, ecx
14667
                xor     ebx, ebp
14668
                ror     eax, 0Bh
14669
                xor     edi, ebp
14670
                mov     ebp, [esi+20h]
14671
                xor     edi, [esp]
14672
                and     ecx, [esp+10h]
14673
                and     edi, [esp+14h]
14674
                xor     ecx, ebx
14675
                lea     ebp, [eax+ebp-71862350h]
14676
                xor     ecx, edi
14677
                ror     ecx, 7
14678
                add     ebp, ecx
14679
                mov     eax, [esp]
14680
                mov     [esp+4], ebp
14681
                mov     ebx, [esp+14h]
14682
                mov     ecx, [esp+18h]
14683
                mov     edi, ebx
14684
                and     ebx, [esp+8]
14685
                and     edi, ecx
14686
                xor     ebx, ebp
14687
                ror     eax, 0Bh
14688
                xor     edi, ebp
14689
                mov     ebp, [esi+58h]
14690
                xor     edi, [esp+1Ch]
14691
                and     ecx, [esp+0Ch]
14692
                and     edi, [esp+10h]
14693
                xor     ecx, ebx
14694
                lea     ebp, [eax+ebp+603A180Eh]
14695
                xor     ecx, edi
14696
                ror     ecx, 7
14697
                add     ebp, ecx
14698
                mov     eax, [esp+1Ch]
14699
                mov     [esp], ebp
14700
                mov     ebx, [esp+10h]
14701
                mov     ecx, [esp+14h]
14702
                mov     edi, ebx
14703
                and     ebx, [esp+4]
14704
                and     edi, ecx
14705
                xor     ebx, ebp
14706
                ror     eax, 0Bh
14707
                xor     edi, ebp
14708
                mov     ebp, [esi+74h]
14709
                xor     edi, [esp+18h]
14710
                and     ecx, [esp+8]
14711
                and     edi, [esp+0Ch]
14712
                xor     ecx, ebx
14713
                lea     ebp, [eax+ebp+6C9E0E8Bh]
14714
                xor     ecx, edi
14715
                ror     ecx, 7
14716
                add     ebp, ecx
14717
                mov     eax, [esp+18h]
14718
                mov     [esp+1Ch], ebp
14719
                mov     ebx, [esp+0Ch]
14720
                mov     ecx, [esp+10h]
14721
                mov     edi, ebx
14722
                and     ebx, [esp]
14723
                and     edi, ecx
14724
                xor     ebx, ebp
14725
                ror     eax, 0Bh
14726
                xor     edi, ebp
14727
                mov     ebp, [esi+38h]
14728
                xor     edi, [esp+14h]
14729
                and     ecx, [esp+4]
14730
                and     edi, [esp+8]
14731
                xor     ecx, ebx
14732
                lea     ebp, [eax+ebp-4FE175C2h]
14733
                xor     ecx, edi
14734
                ror     ecx, 7
14735
                add     ebp, ecx
14736
                mov     eax, [esp+14h]
14737
                mov     [esp+18h], ebp
14738
                mov     ebx, [esp+8]
14739
                mov     ecx, [esp+0Ch]
14740
                mov     edi, ebx
14741
                and     ebx, [esp+1Ch]
14742
                and     edi, ecx
14743
                xor     ebx, ebp
14744
                ror     eax, 0Bh
14745
                xor     edi, ebp
14746
                mov     ebp, [esi+64h]
14747
                xor     edi, [esp+10h]
14748
                and     ecx, [esp]
14749
                and     edi, [esp+4]
14750
                xor     ecx, ebx
14751
                lea     ebp, [eax+ebp-28EA883Fh]
14752
                xor     ecx, edi
14753
                ror     ecx, 7
14754
                add     ebp, ecx
14755
                mov     eax, [esp+10h]
14756
                mov     [esp+14h], ebp
14757
                mov     ebx, [esp+4]
14758
                mov     ecx, [esp+8]
14759
                mov     edi, ebx
14760
                and     ebx, [esp+18h]
14761
                and     edi, ecx
14762
                xor     ebx, ebp
14763
                ror     eax, 0Bh
14764
                xor     edi, ebp
14765
                mov     ebp, [esi+30h]
14766
                xor     edi, [esp+0Ch]
14767
                and     ecx, [esp+1Ch]
14768
                and     edi, [esp]
14769
                xor     ecx, ebx
14770
                lea     ebp, [eax+ebp-42CEB4D9h]
14771
                xor     ecx, edi
14772
                ror     ecx, 7
14773
                add     ebp, ecx
14774
                mov     eax, [esp+0Ch]
14775
                mov     [esp+10h], ebp
14776
                mov     ebx, [esp]
14777
                mov     ecx, [esp+4]
14778
                mov     edi, ebx
14779
                and     ebx, [esp+14h]
14780
                and     edi, ecx
14781
                xor     ebx, ebp
14782
                ror     eax, 0Bh
14783
                xor     edi, ebp
14784
                mov     ebp, [esi+60h]
14785
                xor     edi, [esp+8]
14786
                and     ecx, [esp+18h]
14787
                and     edi, [esp+1Ch]
14788
                xor     ecx, ebx
14789
                lea     ebp, [eax+ebp+78AF2FDAh]
14790
                xor     ecx, edi
14791
                ror     ecx, 7
14792
                add     ebp, ecx
14793
                mov     eax, [esp+8]
14794
                mov     [esp+0Ch], ebp
14795
                mov     ebx, [esp+1Ch]
14796
                mov     ecx, [esp]
14797
                mov     edi, ebx
14798
                and     ebx, [esp+10h]
14799
                and     edi, ecx
14800
                xor     ebx, ebp
14801
                ror     eax, 0Bh
14802
                xor     edi, ebp
14803
                mov     ebp, [esi+78h]
14804
                xor     edi, [esp+4]
14805
                and     ecx, [esp+14h]
14806
                and     edi, [esp+18h]
14807
                xor     ecx, ebx
14808
                lea     ebp, [eax+ebp+55605C60h]
14809
                xor     ecx, edi
14810
                ror     ecx, 7
14811
                add     ebp, ecx
14812
                mov     eax, [esp+4]
14813
                mov     [esp+8], ebp
14814
                mov     ebx, [esp+18h]
14815
                mov     ecx, [esp+1Ch]
14816
                mov     edi, ebx
14817
                and     ebx, [esp+0Ch]
14818
                and     edi, ecx
14819
                xor     ebx, ebp
14820
                ror     eax, 0Bh
14821
                xor     edi, ebp
14822
                mov     ebp, [esi+40h]
14823
                xor     edi, [esp]
14824
                and     ecx, [esp+10h]
14825
                and     edi, [esp+14h]
14826
                xor     ecx, ebx
14827
                lea     ebp, [eax+ebp-19AADA0Dh]
14828
                xor     ecx, edi
14829
                ror     ecx, 7
14830
                add     ebp, ecx
14831
                mov     eax, [esp]
14832
                mov     [esp+4], ebp
14833
                mov     ebx, [esp+14h]
14834
                mov     ecx, [esp+18h]
14835
                mov     edi, ebx
14836
                and     ebx, [esp+8]
14837
                and     edi, ecx
14838
                xor     ebx, ebp
14839
                ror     eax, 0Bh
14840
                xor     edi, ebp
14841
                mov     ebp, [esi+68h]
14842
                xor     edi, [esp+1Ch]
14843
                and     ecx, [esp+0Ch]
14844
                and     edi, [esp+10h]
14845
                xor     ecx, ebx
14846
                lea     ebp, [eax+ebp-55AA546Ch]
14847
                xor     ecx, edi
14848
                ror     ecx, 7
14849
                add     ebp, ecx
14850
                mov     eax, [esp+1Ch]
14851
                mov     [esp], ebp
14852
                mov     ebx, [esp+10h]
14853
                mov     ecx, [esp+14h]
14854
                mov     edi, ebx
14855
                and     ebx, [esp+4]
14856
                and     edi, ecx
14857
                xor     ebx, ebp
14858
                ror     eax, 0Bh
14859
                xor     edi, ebp
14860
                mov     ebp, [esi+7Ch]
14861
                xor     edi, [esp+18h]
14862
                and     ecx, [esp+8]
14863
                and     edi, [esp+0Ch]
14864
                xor     ecx, ebx
14865
                lea     ebp, [eax+ebp+57489862h]
14866
                xor     ecx, edi
14867
                ror     ecx, 7
14868
                add     ebp, ecx
14869
                mov     eax, [esp+18h]
14870
                mov     [esp+1Ch], ebp
14871
                mov     ebx, [esp+0Ch]
14872
                mov     ecx, [esp+10h]
14873
                mov     edi, ebx
14874
                and     ebx, [esp]
14875
                and     edi, ecx
14876
                xor     ebx, ebp
14877
                ror     eax, 0Bh
14878
                xor     edi, ebp
14879
                mov     ebp, [esi+3Ch]
14880
                xor     edi, [esp+14h]
14881
                and     ecx, [esp+4]
14882
                and     edi, [esp+8]
14883
                xor     ecx, ebx
14884
                lea     ebp, [eax+ebp+63E81440h]
14885
                xor     ecx, edi
14886
                ror     ecx, 7
14887
                add     ebp, ecx
14888
                mov     eax, [esp+14h]
14889
                mov     [esp+18h], ebp
14890
                mov     ebx, [esp+8]
14891
                mov     ecx, [esp+0Ch]
14892
                mov     edi, ebx
14893
                and     ebx, [esp+1Ch]
14894
                and     edi, ecx
14895
                xor     ebx, ebp
14896
                ror     eax, 0Bh
14897
                xor     edi, ebp
14898
                mov     ebp, [esi+1Ch]
14899
                xor     edi, [esp+10h]
14900
                and     ecx, [esp]
14901
                and     edi, [esp+4]
14902
                xor     ecx, ebx
14903
                lea     ebp, [eax+ebp+55CA396Ah]
14904
                xor     ecx, edi
14905
                ror     ecx, 7
14906
                add     ebp, ecx
14907
                mov     eax, [esp+10h]
14908
                mov     [esp+14h], ebp
14909
                mov     ebx, [esp+4]
14910
                mov     ecx, [esp+8]
14911
                mov     edi, ebx
14912
                and     ebx, [esp+18h]
14913
                and     edi, ecx
14914
                xor     ebx, ebp
14915
                ror     eax, 0Bh
14916
                xor     edi, ebp
14917
                mov     ebp, [esi+0Ch]
14918
                xor     edi, [esp+0Ch]
14919
                and     ecx, [esp+1Ch]
14920
                and     edi, [esp]
14921
                xor     ecx, ebx
14922
                lea     ebp, [eax+ebp+2AAB10B6h]
14923
                xor     ecx, edi
14924
                ror     ecx, 7
14925
                add     ebp, ecx
14926
                mov     eax, [esp+0Ch]
14927
                mov     [esp+10h], ebp
14928
                mov     ebx, [esp]
14929
                mov     ecx, [esp+4]
14930
                mov     edi, ebx
14931
                and     ebx, [esp+14h]
14932
                and     edi, ecx
14933
                xor     ebx, ebp
14934
                ror     eax, 0Bh
14935
                xor     edi, ebp
14936
                mov     ebp, [esi+4]
14937
                xor     edi, [esp+8]
14938
                and     ecx, [esp+18h]
14939
                and     edi, [esp+1Ch]
14940
                xor     ecx, ebx
14941
                lea     ebp, [eax+ebp-4B33A3CCh]
14942
                xor     ecx, edi
14943
                ror     ecx, 7
14944
                add     ebp, ecx
14945
                mov     eax, [esp+8]
14946
                mov     [esp+0Ch], ebp
14947
                mov     ebx, [esp+1Ch]
14948
                mov     ecx, [esp]
14949
                mov     edi, ebx
14950
                and     ebx, [esp+10h]
14951
                and     edi, ecx
14952
                xor     ebx, ebp
14953
                ror     eax, 0Bh
14954
                xor     edi, ebp
14955
                mov     ebp, [esi]
14956
                xor     edi, [esp+4]
14957
                and     ecx, [esp+14h]
14958
                and     edi, [esp+18h]
14959
                xor     ecx, ebx
14960
                lea     ebp, [eax+ebp+1141E8CEh]
14961
                xor     ecx, edi
14962
                ror     ecx, 7
14963
                add     ebp, ecx
14964
                mov     eax, [esp+4]
14965
                mov     [esp+8], ebp
14966
                mov     ebx, [esp+18h]
14967
                mov     ecx, [esp+1Ch]
14968
                mov     edi, ebx
14969
                and     ebx, [esp+0Ch]
14970
                and     edi, ecx
14971
                xor     ebx, ebp
14972
                ror     eax, 0Bh
14973
                xor     edi, ebp
14974
                mov     ebp, [esi+48h]
14975
                xor     edi, [esp]
14976
                and     ecx, [esp+10h]
14977
                and     edi, [esp+14h]
14978
                xor     ecx, ebx
14979
                lea     ebp, [eax+ebp-5EAB7951h]
14980
                xor     ecx, edi
14981
                ror     ecx, 7
14982
                add     ebp, ecx
14983
                mov     eax, [esp]
14984
                mov     [esp+4], ebp
14985
                mov     ebx, [esp+14h]
14986
                mov     ecx, [esp+18h]
14987
                mov     edi, ebx
14988
                and     ebx, [esp+8]
14989
                and     edi, ecx
14990
                xor     ebx, ebp
14991
                ror     eax, 0Bh
14992
                xor     edi, ebp
14993
                mov     ebp, [esi+6Ch]
14994
                xor     edi, [esp+1Ch]
14995
                and     ecx, [esp+0Ch]
14996
                and     edi, [esp+10h]
14997
                xor     ecx, ebx
14998
                lea     ebp, [eax+ebp+7C72E993h]
14999
                xor     ecx, edi
15000
                ror     ecx, 7
15001
                add     ebp, ecx
15002
                mov     eax, [esp+1Ch]
15003
                mov     [esp], ebp
15004
                mov     ebx, [esp+10h]
15005
                mov     ecx, [esp+14h]
15006
                mov     edi, ebx
15007
                and     ebx, [esp+4]
15008
                and     edi, ecx
15009
                xor     ebx, ebp
15010
                ror     eax, 0Bh
15011
                xor     edi, ebp
15012
                mov     ebp, [esi+34h]
15013
                xor     edi, [esp+18h]
15014
                and     ecx, [esp+8]
15015
                and     edi, [esp+0Ch]
15016
                xor     ecx, ebx
15017
                lea     ebp, [eax+ebp-4C11EBEFh]
15018
                xor     ecx, edi
15019
                ror     ecx, 7
15020
                add     ebp, ecx
15021
                mov     eax, [esp+18h]
15022
                mov     [esp+1Ch], ebp
15023
                mov     ebx, [esp+0Ch]
15024
                mov     ecx, [esp+10h]
15025
                mov     edi, ebx
15026
                and     ebx, [esp]
15027
                and     edi, ecx
15028
                xor     ebx, ebp
15029
                ror     eax, 0Bh
15030
                xor     edi, ebp
15031
                mov     ebp, [esi+18h]
15032
                xor     edi, [esp+14h]
15033
                and     ecx, [esp+4]
15034
                and     edi, [esp+8]
15035
                xor     ecx, ebx
15036
                lea     ebp, [eax+ebp+636FBC2Ah]
15037
                xor     ecx, edi
15038
                ror     ecx, 7
15039
                add     ebp, ecx
15040
                mov     eax, [esp+14h]
15041
                mov     [esp+18h], ebp
15042
                mov     ebx, [esp+8]
15043
                mov     ecx, [esp+0Ch]
15044
                mov     edi, ebx
15045
                and     ebx, [esp+1Ch]
15046
                and     edi, ecx
15047
                xor     ebx, ebp
15048
                ror     eax, 0Bh
15049
                xor     edi, ebp
15050
                mov     ebp, [esi+54h]
15051
                xor     edi, [esp+10h]
15052
                and     ecx, [esp]
15053
                and     edi, [esp+4]
15054
                xor     ecx, ebx
15055
                lea     ebp, [eax+ebp+2BA9C55Dh]
15056
                xor     ecx, edi
15057
                ror     ecx, 7
15058
                add     ebp, ecx
15059
                mov     eax, [esp+10h]
15060
                mov     [esp+14h], ebp
15061
                mov     ebx, [esp+4]
15062
                mov     ecx, [esp+8]
15063
                mov     edi, ebx
15064
                and     ebx, [esp+18h]
15065
                and     edi, ecx
15066
                xor     ebx, ebp
15067
                ror     eax, 0Bh
15068
                xor     edi, ebp
15069
                mov     ebp, [esi+28h]
15070
                xor     edi, [esp+0Ch]
15071
                and     ecx, [esp+1Ch]
15072
                and     edi, [esp]
15073
                xor     ecx, ebx
15074
                lea     ebp, [eax+ebp+741831F6h]
15075
                xor     ecx, edi
15076
                ror     ecx, 7
15077
                add     ebp, ecx
15078
                mov     eax, [esp+0Ch]
15079
                mov     [esp+10h], ebp
15080
                mov     ebx, [esp]
15081
                mov     ecx, [esp+4]
15082
                mov     edi, ebx
15083
                and     ebx, [esp+14h]
15084
                and     edi, ecx
15085
                xor     ebx, ebp
15086
                ror     eax, 0Bh
15087
                xor     edi, ebp
15088
                mov     ebp, [esi+5Ch]
15089
                xor     edi, [esp+8]
15090
                and     ecx, [esp+18h]
15091
                and     edi, [esp+1Ch]
15092
                xor     ecx, ebx
15093
                lea     ebp, [eax+ebp-31A3C1EAh]
15094
                xor     ecx, edi
15095
                ror     ecx, 7
15096
                add     ebp, ecx
15097
                mov     eax, [esp+8]
15098
                mov     [esp+0Ch], ebp
15099
                mov     ebx, [esp+1Ch]
15100
                mov     ecx, [esp]
15101
                mov     edi, ebx
15102
                and     ebx, [esp+10h]
15103
                and     edi, ecx
15104
                xor     ebx, ebp
15105
                ror     eax, 0Bh
15106
                xor     edi, ebp
15107
                mov     ebp, [esi+2Ch]
15108
                xor     edi, [esp+4]
15109
                and     ecx, [esp+14h]
15110
                and     edi, [esp+18h]
15111
                xor     ecx, ebx
15112
                lea     ebp, [eax+ebp-64786CE2h]
15113
                xor     ecx, edi
15114
                ror     ecx, 7
15115
                add     ebp, ecx
15116
                mov     eax, [esp+4]
15117
                mov     [esp+8], ebp
15118
                mov     ebx, [esp+18h]
15119
                mov     ecx, [esp+1Ch]
15120
                mov     edi, ebx
15121
                and     ebx, [esp+0Ch]
15122
                and     edi, ecx
15123
                xor     ebx, ebp
15124
                ror     eax, 0Bh
15125
                xor     edi, ebp
15126
                mov     ebp, [esi+14h]
15127
                xor     edi, [esp]
15128
                and     ecx, [esp+10h]
15129
                and     edi, [esp+14h]
15130
                xor     ecx, ebx
15131
                lea     ebp, [eax+ebp-502945CDh]
15132
                xor     ecx, edi
15133
                ror     ecx, 7
15134
                add     ebp, ecx
15135
                mov     eax, [esp]
15136
                mov     [esp+4], ebp
15137
                mov     ebx, [esp+14h]
15138
                mov     ecx, [esp+18h]
15139
                mov     edi, ebx
15140
                and     ebx, [esp+8]
15141
                and     edi, ecx
15142
                xor     ebx, ebp
15143
                ror     eax, 0Bh
15144
                xor     edi, ebp
15145
                mov     ebp, [esi+8]
15146
                xor     edi, [esp+1Ch]
15147
                and     ecx, [esp+0Ch]
15148
                and     edi, [esp+10h]
15149
                xor     ecx, ebx
15150
                lea     ebp, [eax+ebp+6C24CF5Ch]
15151
                xor     ecx, edi
15152
                ror     ecx, 7
15153
                add     ebp, ecx
15154
                mov     eax, [esp+1Ch]
15155
                mov     [esp], ebp
15156
                mov     edi, [esp+24h]
15157
                mov     eax, [esp]
15158
                mov     ebx, [esp+4]
15159
                add     [edi], eax
15160
                add     [edi+4], ebx
15161
                mov     ecx, [esp+8]
15162
                mov     edx, [esp+0Ch]
15163
                add     [edi+8], ecx
15164
                add     [edi+0Ch], edx
15165
                mov     eax, [esp+10h]
15166
                mov     ebx, [esp+14h]
15167
                add     [edi+10h], eax
15168
                add     [edi+14h], ebx
15169
                mov     ebp, [esp+28h]
15170
                mov     ecx, [esp+18h]
15171
                mov     edx, [esp+1Ch]
15172
                mov     esp, ebp
15173
                add     [edi+18h], ecx
15174
                add     [edi+1Ch], edx
15175
                pop     ebp
15176
                pop     edi
15177
                pop     esi
15178
                pop     ebx
15179
end;
15180
15181
procedure THashBaseHaval.DoTransform4(Buffer: PUInt32Array);
15182
asm
15183
                push    ebx
15184
                push    esi
15185
                push    edi
15186
                lea     edi, [eax].THashBaseHaval.FDigest
15187
                mov     esi, edx
15188
                push    ebp
15189
                mov     ebp, esp
15190
                add     esp, 0FFFFFFD4h
15191
                and     esp, 0FFFFFFC0h
15192
                mov     eax, [edi]
15193
                mov     ebx, [edi+4]
15194
                mov     [esp+20h], esi
15195
                mov     [esp+24h], edi
15196
                mov     [esp+28h], ebp
15197
                mov     [esp], eax
15198
                mov     [esp+4], ebx
15199
                mov     ecx, [edi+8]
15200
                mov     edx, [edi+0Ch]
15201
                mov     [esp+8], ecx
15202
                mov     [esp+0Ch], edx
15203
                mov     eax, [edi+10h]
15204
                mov     ebx, [edi+14h]
15205
                mov     [esp+10h], eax
15206
                mov     [esp+14h], ebx
15207
                mov     ecx, [edi+18h]
15208
                mov     edx, [edi+1Ch]
15209
                mov     [esp+18h], ecx
15210
                mov     [esp+1Ch], edx
15211
                mov     eax, edx
15212
                mov     ebp, [esp+18h]
15213
                mov     ebx, [esp+4]
15214
                mov     ecx, [esp]
15215
                ror     eax, 0Bh
15216
                xor     ebx, ecx
15217
                mov     edi, [esp+8]
15218
                and     ebx, [esp+0Ch]
15219
                and     edi, [esp+10h]
15220
                xor     ecx, ebx
15221
                and     ebp, [esp+14h]
15222
                xor     edi, ecx
15223
                mov     edx, [esi]
15224
                xor     ebp, edi
15225
                add     eax, edx
15226
                ror     ebp, 7
15227
                add     ebp, eax
15228
                mov     eax, [esp+18h]
15229
                mov     [esp+1Ch], ebp
15230
                mov     ebp, [esp+14h]
15231
                mov     ebx, [esp]
15232
                mov     ecx, [esp+1Ch]
15233
                ror     eax, 0Bh
15234
                xor     ebx, ecx
15235
                mov     edi, [esp+4]
15236
                and     ebx, [esp+8]
15237
                and     edi, [esp+0Ch]
15238
                xor     ecx, ebx
15239
                and     ebp, [esp+10h]
15240
                xor     edi, ecx
15241
                mov     edx, [esi+4]
15242
                xor     ebp, edi
15243
                add     eax, edx
15244
                ror     ebp, 7
15245
                add     ebp, eax
15246
                mov     eax, [esp+14h]
15247
                mov     [esp+18h], ebp
15248
                mov     ebp, [esp+10h]
15249
                mov     ebx, [esp+1Ch]
15250
                mov     ecx, [esp+18h]
15251
                ror     eax, 0Bh
15252
                xor     ebx, ecx
15253
                mov     edi, [esp]
15254
                and     ebx, [esp+4]
15255
                and     edi, [esp+8]
15256
                xor     ecx, ebx
15257
                and     ebp, [esp+0Ch]
15258
                xor     edi, ecx
15259
                mov     edx, [esi+8]
15260
                xor     ebp, edi
15261
                add     eax, edx
15262
                ror     ebp, 7
15263
                add     ebp, eax
15264
                mov     eax, [esp+10h]
15265
                mov     [esp+14h], ebp
15266
                mov     ebp, [esp+0Ch]
15267
                mov     ebx, [esp+18h]
15268
                mov     ecx, [esp+14h]
15269
                ror     eax, 0Bh
15270
                xor     ebx, ecx
15271
                mov     edi, [esp+1Ch]
15272
                and     ebx, [esp]
15273
                and     edi, [esp+4]
15274
                xor     ecx, ebx
15275
                and     ebp, [esp+8]
15276
                xor     edi, ecx
15277
                mov     edx, [esi+0Ch]
15278
                xor     ebp, edi
15279
                add     eax, edx
15280
                ror     ebp, 7
15281
                add     ebp, eax
15282
                mov     eax, [esp+0Ch]
15283
                mov     [esp+10h], ebp
15284
                mov     ebp, [esp+8]
15285
                mov     ebx, [esp+14h]
15286
                mov     ecx, [esp+10h]
15287
                ror     eax, 0Bh
15288
                xor     ebx, ecx
15289
                mov     edi, [esp+18h]
15290
                and     ebx, [esp+1Ch]
15291
                and     edi, [esp]
15292
                xor     ecx, ebx
15293
                and     ebp, [esp+4]
15294
                xor     edi, ecx
15295
                mov     edx, [esi+10h]
15296
                xor     ebp, edi
15297
                add     eax, edx
15298
                ror     ebp, 7
15299
                add     ebp, eax
15300
                mov     eax, [esp+8]
15301
                mov     [esp+0Ch], ebp
15302
                mov     ebp, [esp+4]
15303
                mov     ebx, [esp+10h]
15304
                mov     ecx, [esp+0Ch]
15305
                ror     eax, 0Bh
15306
                xor     ebx, ecx
15307
                mov     edi, [esp+14h]
15308
                and     ebx, [esp+18h]
15309
                and     edi, [esp+1Ch]
15310
                xor     ecx, ebx
15311
                and     ebp, [esp]
15312
                xor     edi, ecx
15313
                mov     edx, [esi+14h]
15314
                xor     ebp, edi
15315
                add     eax, edx
15316
                ror     ebp, 7
15317
                add     ebp, eax
15318
                mov     eax, [esp+4]
15319
                mov     [esp+8], ebp
15320
                mov     ebp, [esp]
15321
                mov     ebx, [esp+0Ch]
15322
                mov     ecx, [esp+8]
15323
                ror     eax, 0Bh
15324
                xor     ebx, ecx
15325
                mov     edi, [esp+10h]
15326
                and     ebx, [esp+14h]
15327
                and     edi, [esp+18h]
15328
                xor     ecx, ebx
15329
                and     ebp, [esp+1Ch]
15330
                xor     edi, ecx
15331
                mov     edx, [esi+18h]
15332
                xor     ebp, edi
15333
                add     eax, edx
15334
                ror     ebp, 7
15335
                add     ebp, eax
15336
                mov     eax, [esp]
15337
                mov     [esp+4], ebp
15338
                mov     ebp, [esp+1Ch]
15339
                mov     ebx, [esp+8]
15340
                mov     ecx, [esp+4]
15341
                ror     eax, 0Bh
15342
                xor     ebx, ecx
15343
                mov     edi, [esp+0Ch]
15344
                and     ebx, [esp+10h]
15345
                and     edi, [esp+14h]
15346
                xor     ecx, ebx
15347
                and     ebp, [esp+18h]
15348
                xor     edi, ecx
15349
                mov     edx, [esi+1Ch]
15350
                xor     ebp, edi
15351
                add     eax, edx
15352
                ror     ebp, 7
15353
                add     ebp, eax
15354
                mov     eax, [esp+1Ch]
15355
                mov     [esp], ebp
15356
                mov     ebp, [esp+18h]
15357
                mov     ebx, [esp+4]
15358
                mov     ecx, [esp]
15359
                ror     eax, 0Bh
15360
                xor     ebx, ecx
15361
                mov     edi, [esp+8]
15362
                and     ebx, [esp+0Ch]
15363
                and     edi, [esp+10h]
15364
                xor     ecx, ebx
15365
                and     ebp, [esp+14h]
15366
                xor     edi, ecx
15367
                mov     edx, [esi+20h]
15368
                xor     ebp, edi
15369
                add     eax, edx
15370
                ror     ebp, 7
15371
                add     ebp, eax
15372
                mov     eax, [esp+18h]
15373
                mov     [esp+1Ch], ebp
15374
                mov     ebp, [esp+14h]
15375
                mov     ebx, [esp]
15376
                mov     ecx, [esp+1Ch]
15377
                ror     eax, 0Bh
15378
                xor     ebx, ecx
15379
                mov     edi, [esp+4]
15380
                and     ebx, [esp+8]
15381
                and     edi, [esp+0Ch]
15382
                xor     ecx, ebx
15383
                and     ebp, [esp+10h]
15384
                xor     edi, ecx
15385
                mov     edx, [esi+24h]
15386
                xor     ebp, edi
15387
                add     eax, edx
15388
                ror     ebp, 7
15389
                add     ebp, eax
15390
                mov     eax, [esp+14h]
15391
                mov     [esp+18h], ebp
15392
                mov     ebp, [esp+10h]
15393
                mov     ebx, [esp+1Ch]
15394
                mov     ecx, [esp+18h]
15395
                ror     eax, 0Bh
15396
                xor     ebx, ecx
15397
                mov     edi, [esp]
15398
                and     ebx, [esp+4]
15399
                and     edi, [esp+8]
15400
                xor     ecx, ebx
15401
                and     ebp, [esp+0Ch]
15402
                xor     edi, ecx
15403
                mov     edx, [esi+28h]
15404
                xor     ebp, edi
15405
                add     eax, edx
15406
                ror     ebp, 7
15407
                add     ebp, eax
15408
                mov     eax, [esp+10h]
15409
                mov     [esp+14h], ebp
15410
                mov     ebp, [esp+0Ch]
15411
                mov     ebx, [esp+18h]
15412
                mov     ecx, [esp+14h]
15413
                ror     eax, 0Bh
15414
                xor     ebx, ecx
15415
                mov     edi, [esp+1Ch]
15416
                and     ebx, [esp]
15417
                and     edi, [esp+4]
15418
                xor     ecx, ebx
15419
                and     ebp, [esp+8]
15420
                xor     edi, ecx
15421
                mov     edx, [esi+2Ch]
15422
                xor     ebp, edi
15423
                add     eax, edx
15424
                ror     ebp, 7
15425
                add     ebp, eax
15426
                mov     eax, [esp+0Ch]
15427
                mov     [esp+10h], ebp
15428
                mov     ebp, [esp+8]
15429
                mov     ebx, [esp+14h]
15430
                mov     ecx, [esp+10h]
15431
                ror     eax, 0Bh
15432
                xor     ebx, ecx
15433
                mov     edi, [esp+18h]
15434
                and     ebx, [esp+1Ch]
15435
                and     edi, [esp]
15436
                xor     ecx, ebx
15437
                and     ebp, [esp+4]
15438
                xor     edi, ecx
15439
                mov     edx, [esi+30h]
15440
                xor     ebp, edi
15441
                add     eax, edx
15442
                ror     ebp, 7
15443
                add     ebp, eax
15444
                mov     eax, [esp+8]
15445
                mov     [esp+0Ch], ebp
15446
                mov     ebp, [esp+4]
15447
                mov     ebx, [esp+10h]
15448
                mov     ecx, [esp+0Ch]
15449
                ror     eax, 0Bh
15450
                xor     ebx, ecx
15451
                mov     edi, [esp+14h]
15452
                and     ebx, [esp+18h]
15453
                and     edi, [esp+1Ch]
15454
                xor     ecx, ebx
15455
                and     ebp, [esp]
15456
                xor     edi, ecx
15457
                mov     edx, [esi+34h]
15458
                xor     ebp, edi
15459
                add     eax, edx
15460
                ror     ebp, 7
15461
                add     ebp, eax
15462
                mov     eax, [esp+4]
15463
                mov     [esp+8], ebp
15464
                mov     ebp, [esp]
15465
                mov     ebx, [esp+0Ch]
15466
                mov     ecx, [esp+8]
15467
                ror     eax, 0Bh
15468
                xor     ebx, ecx
15469
                mov     edi, [esp+10h]
15470
                and     ebx, [esp+14h]
15471
                and     edi, [esp+18h]
15472
                xor     ecx, ebx
15473
                and     ebp, [esp+1Ch]
15474
                xor     edi, ecx
15475
                mov     edx, [esi+38h]
15476
                xor     ebp, edi
15477
                add     eax, edx
15478
                ror     ebp, 7
15479
                add     ebp, eax
15480
                mov     eax, [esp]
15481
                mov     [esp+4], ebp
15482
                mov     ebp, [esp+1Ch]
15483
                mov     ebx, [esp+8]
15484
                mov     ecx, [esp+4]
15485
                ror     eax, 0Bh
15486
                xor     ebx, ecx
15487
                mov     edi, [esp+0Ch]
15488
                and     ebx, [esp+10h]
15489
                and     edi, [esp+14h]
15490
                xor     ecx, ebx
15491
                and     ebp, [esp+18h]
15492
                xor     edi, ecx
15493
                mov     edx, [esi+3Ch]
15494
                xor     ebp, edi
15495
                add     eax, edx
15496
                ror     ebp, 7
15497
                add     ebp, eax
15498
                mov     eax, [esp+1Ch]
15499
                mov     [esp], ebp
15500
                mov     ebp, [esp+18h]
15501
                mov     ebx, [esp+4]
15502
                mov     ecx, [esp]
15503
                ror     eax, 0Bh
15504
                xor     ebx, ecx
15505
                mov     edi, [esp+8]
15506
                and     ebx, [esp+0Ch]
15507
                and     edi, [esp+10h]
15508
                xor     ecx, ebx
15509
                and     ebp, [esp+14h]
15510
                xor     edi, ecx
15511
                mov     edx, [esi+40h]
15512
                xor     ebp, edi
15513
                add     eax, edx
15514
                ror     ebp, 7
15515
                add     ebp, eax
15516
                mov     eax, [esp+18h]
15517
                mov     [esp+1Ch], ebp
15518
                mov     ebp, [esp+14h]
15519
                mov     ebx, [esp]
15520
                mov     ecx, [esp+1Ch]
15521
                ror     eax, 0Bh
15522
                xor     ebx, ecx
15523
                mov     edi, [esp+4]
15524
                and     ebx, [esp+8]
15525
                and     edi, [esp+0Ch]
15526
                xor     ecx, ebx
15527
                and     ebp, [esp+10h]
15528
                xor     edi, ecx
15529
                mov     edx, [esi+44h]
15530
                xor     ebp, edi
15531
                add     eax, edx
15532
                ror     ebp, 7
15533
                add     ebp, eax
15534
                mov     eax, [esp+14h]
15535
                mov     [esp+18h], ebp
15536
                mov     ebp, [esp+10h]
15537
                mov     ebx, [esp+1Ch]
15538
                mov     ecx, [esp+18h]
15539
                ror     eax, 0Bh
15540
                xor     ebx, ecx
15541
                mov     edi, [esp]
15542
                and     ebx, [esp+4]
15543
                and     edi, [esp+8]
15544
                xor     ecx, ebx
15545
                and     ebp, [esp+0Ch]
15546
                xor     edi, ecx
15547
                mov     edx, [esi+48h]
15548
                xor     ebp, edi
15549
                add     eax, edx
15550
                ror     ebp, 7
15551
                add     ebp, eax
15552
                mov     eax, [esp+10h]
15553
                mov     [esp+14h], ebp
15554
                mov     ebp, [esp+0Ch]
15555
                mov     ebx, [esp+18h]
15556
                mov     ecx, [esp+14h]
15557
                ror     eax, 0Bh
15558
                xor     ebx, ecx
15559
                mov     edi, [esp+1Ch]
15560
                and     ebx, [esp]
15561
                and     edi, [esp+4]
15562
                xor     ecx, ebx
15563
                and     ebp, [esp+8]
15564
                xor     edi, ecx
15565
                mov     edx, [esi+4Ch]
15566
                xor     ebp, edi
15567
                add     eax, edx
15568
                ror     ebp, 7
15569
                add     ebp, eax
15570
                mov     eax, [esp+0Ch]
15571
                mov     [esp+10h], ebp
15572
                mov     ebp, [esp+8]
15573
                mov     ebx, [esp+14h]
15574
                mov     ecx, [esp+10h]
15575
                ror     eax, 0Bh
15576
                xor     ebx, ecx
15577
                mov     edi, [esp+18h]
15578
                and     ebx, [esp+1Ch]
15579
                and     edi, [esp]
15580
                xor     ecx, ebx
15581
                and     ebp, [esp+4]
15582
                xor     edi, ecx
15583
                mov     edx, [esi+50h]
15584
                xor     ebp, edi
15585
                add     eax, edx
15586
                ror     ebp, 7
15587
                add     ebp, eax
15588
                mov     eax, [esp+8]
15589
                mov     [esp+0Ch], ebp
15590
                mov     ebp, [esp+4]
15591
                mov     ebx, [esp+10h]
15592
                mov     ecx, [esp+0Ch]
15593
                ror     eax, 0Bh
15594
                xor     ebx, ecx
15595
                mov     edi, [esp+14h]
15596
                and     ebx, [esp+18h]
15597
                and     edi, [esp+1Ch]
15598
                xor     ecx, ebx
15599
                and     ebp, [esp]
15600
                xor     edi, ecx
15601
                mov     edx, [esi+54h]
15602
                xor     ebp, edi
15603
                add     eax, edx
15604
                ror     ebp, 7
15605
                add     ebp, eax
15606
                mov     eax, [esp+4]
15607
                mov     [esp+8], ebp
15608
                mov     ebp, [esp]
15609
                mov     ebx, [esp+0Ch]
15610
                mov     ecx, [esp+8]
15611
                ror     eax, 0Bh
15612
                xor     ebx, ecx
15613
                mov     edi, [esp+10h]
15614
                and     ebx, [esp+14h]
15615
                and     edi, [esp+18h]
15616
                xor     ecx, ebx
15617
                and     ebp, [esp+1Ch]
15618
                xor     edi, ecx
15619
                mov     edx, [esi+58h]
15620
                xor     ebp, edi
15621
                add     eax, edx
15622
                ror     ebp, 7
15623
                add     ebp, eax
15624
                mov     eax, [esp]
15625
                mov     [esp+4], ebp
15626
                mov     ebp, [esp+1Ch]
15627
                mov     ebx, [esp+8]
15628
                mov     ecx, [esp+4]
15629
                ror     eax, 0Bh
15630
                xor     ebx, ecx
15631
                mov     edi, [esp+0Ch]
15632
                and     ebx, [esp+10h]
15633
                and     edi, [esp+14h]
15634
                xor     ecx, ebx
15635
                and     ebp, [esp+18h]
15636
                xor     edi, ecx
15637
                mov     edx, [esi+5Ch]
15638
                xor     ebp, edi
15639
                add     eax, edx
15640
                ror     ebp, 7
15641
                add     ebp, eax
15642
                mov     eax, [esp+1Ch]
15643
                mov     [esp], ebp
15644
                mov     ebp, [esp+18h]
15645
                mov     ebx, [esp+4]
15646
                mov     ecx, [esp]
15647
                ror     eax, 0Bh
15648
                xor     ebx, ecx
15649
                mov     edi, [esp+8]
15650
                and     ebx, [esp+0Ch]
15651
                and     edi, [esp+10h]
15652
                xor     ecx, ebx
15653
                and     ebp, [esp+14h]
15654
                xor     edi, ecx
15655
                mov     edx, [esi+60h]
15656
                xor     ebp, edi
15657
                add     eax, edx
15658
                ror     ebp, 7
15659
                add     ebp, eax
15660
                mov     eax, [esp+18h]
15661
                mov     [esp+1Ch], ebp
15662
                mov     ebp, [esp+14h]
15663
                mov     ebx, [esp]
15664
                mov     ecx, [esp+1Ch]
15665
                ror     eax, 0Bh
15666
                xor     ebx, ecx
15667
                mov     edi, [esp+4]
15668
                and     ebx, [esp+8]
15669
                and     edi, [esp+0Ch]
15670
                xor     ecx, ebx
15671
                and     ebp, [esp+10h]
15672
                xor     edi, ecx
15673
                mov     edx, [esi+64h]
15674
                xor     ebp, edi
15675
                add     eax, edx
15676
                ror     ebp, 7
15677
                add     ebp, eax
15678
                mov     eax, [esp+14h]
15679
                mov     [esp+18h], ebp
15680
                mov     ebp, [esp+10h]
15681
                mov     ebx, [esp+1Ch]
15682
                mov     ecx, [esp+18h]
15683
                ror     eax, 0Bh
15684
                xor     ebx, ecx
15685
                mov     edi, [esp]
15686
                and     ebx, [esp+4]
15687
                and     edi, [esp+8]
15688
                xor     ecx, ebx
15689
                and     ebp, [esp+0Ch]
15690
                xor     edi, ecx
15691
                mov     edx, [esi+68h]
15692
                xor     ebp, edi
15693
                add     eax, edx
15694
                ror     ebp, 7
15695
                add     ebp, eax
15696
                mov     eax, [esp+10h]
15697
                mov     [esp+14h], ebp
15698
                mov     ebp, [esp+0Ch]
15699
                mov     ebx, [esp+18h]
15700
                mov     ecx, [esp+14h]
15701
                ror     eax, 0Bh
15702
                xor     ebx, ecx
15703
                mov     edi, [esp+1Ch]
15704
                and     ebx, [esp]
15705
                and     edi, [esp+4]
15706
                xor     ecx, ebx
15707
                and     ebp, [esp+8]
15708
                xor     edi, ecx
15709
                mov     edx, [esi+6Ch]
15710
                xor     ebp, edi
15711
                add     eax, edx
15712
                ror     ebp, 7
15713
                add     ebp, eax
15714
                mov     eax, [esp+0Ch]
15715
                mov     [esp+10h], ebp
15716
                mov     ebp, [esp+8]
15717
                mov     ebx, [esp+14h]
15718
                mov     ecx, [esp+10h]
15719
                ror     eax, 0Bh
15720
                xor     ebx, ecx
15721
                mov     edi, [esp+18h]
15722
                and     ebx, [esp+1Ch]
15723
                and     edi, [esp]
15724
                xor     ecx, ebx
15725
                and     ebp, [esp+4]
15726
                xor     edi, ecx
15727
                mov     edx, [esi+70h]
15728
                xor     ebp, edi
15729
                add     eax, edx
15730
                ror     ebp, 7
15731
                add     ebp, eax
15732
                mov     eax, [esp+8]
15733
                mov     [esp+0Ch], ebp
15734
                mov     ebp, [esp+4]
15735
                mov     ebx, [esp+10h]
15736
                mov     ecx, [esp+0Ch]
15737
                ror     eax, 0Bh
15738
                xor     ebx, ecx
15739
                mov     edi, [esp+14h]
15740
                and     ebx, [esp+18h]
15741
                and     edi, [esp+1Ch]
15742
                xor     ecx, ebx
15743
                and     ebp, [esp]
15744
                xor     edi, ecx
15745
                mov     edx, [esi+74h]
15746
                xor     ebp, edi
15747
                add     eax, edx
15748
                ror     ebp, 7
15749
                add     ebp, eax
15750
                mov     eax, [esp+4]
15751
                mov     [esp+8], ebp
15752
                mov     ebp, [esp]
15753
                mov     ebx, [esp+0Ch]
15754
                mov     ecx, [esp+8]
15755
                ror     eax, 0Bh
15756
                xor     ebx, ecx
15757
                mov     edi, [esp+10h]
15758
                and     ebx, [esp+14h]
15759
                and     edi, [esp+18h]
15760
                xor     ecx, ebx
15761
                and     ebp, [esp+1Ch]
15762
                xor     edi, ecx
15763
                mov     edx, [esi+78h]
15764
                xor     ebp, edi
15765
                add     eax, edx
15766
                ror     ebp, 7
15767
                add     ebp, eax
15768
                mov     eax, [esp]
15769
                mov     [esp+4], ebp
15770
                mov     ebp, [esp+1Ch]
15771
                mov     ebx, [esp+8]
15772
                mov     ecx, [esp+4]
15773
                ror     eax, 0Bh
15774
                xor     ebx, ecx
15775
                mov     edi, [esp+0Ch]
15776
                and     ebx, [esp+10h]
15777
                and     edi, [esp+14h]
15778
                xor     ecx, ebx
15779
                and     ebp, [esp+18h]
15780
                xor     edi, ecx
15781
                mov     edx, [esi+7Ch]
15782
                xor     ebp, edi
15783
                add     eax, edx
15784
                ror     ebp, 7
15785
                add     ebp, eax
15786
                mov     eax, [esp+1Ch]
15787
                mov     [esp], ebp
15788
                mov     ebp, [esp]
15789
                mov     ebx, [esp+8]
15790
                mov     edi, [esp+14h]
15791
                xor     ebp, 0FFFFFFFFh
15792
                mov     ecx, [esp+18h]
15793
                and     ebx, edi
15794
                mov     edx, [esp+10h]
15795
                and     ebp, ecx
15796
                xor     ebx, [esp+0Ch]
15797
                xor     ebp, edx
15798
                xor     ecx, edi
15799
                xor     ebx, ebp
15800
                and     ecx, [esp+8]
15801
                and     ebx, [esp+4]
15802
                ror     eax, 0Bh
15803
                xor     ecx, edx
15804
                mov     ebp, [esi+14h]
15805
                xor     ecx, ebx
15806
                and     edi, [esp]
15807
                xor     ecx, edi
15808
                lea     ebp, [eax+ebp+452821E6h]
15809
                ror     ecx, 7
15810
                add     ebp, ecx
15811
                mov     eax, [esp+18h]
15812
                mov     [esp+1Ch], ebp
15813
                mov     ebx, [esp+4]
15814
                mov     edi, [esp+10h]
15815
                xor     ebp, 0FFFFFFFFh
15816
                mov     ecx, [esp+14h]
15817
                and     ebx, edi
15818
                mov     edx, [esp+0Ch]
15819
                and     ebp, ecx
15820
                xor     ebx, [esp+8]
15821
                xor     ebp, edx
15822
                xor     ecx, edi
15823
                xor     ebx, ebp
15824
                and     ecx, [esp+4]
15825
                and     ebx, [esp]
15826
                ror     eax, 0Bh
15827
                xor     ecx, edx
15828
                mov     ebp, [esi+38h]
15829
                xor     ecx, ebx
15830
                and     edi, [esp+1Ch]
15831
                xor     ecx, edi
15832
                lea     ebp, [eax+ebp+38D01377h]
15833
                ror     ecx, 7
15834
                add     ebp, ecx
15835
                mov     eax, [esp+14h]
15836
                mov     [esp+18h], ebp
15837
                mov     ebx, [esp]
15838
                mov     edi, [esp+0Ch]
15839
                xor     ebp, 0FFFFFFFFh
15840
                mov     ecx, [esp+10h]
15841
                and     ebx, edi
15842
                mov     edx, [esp+8]
15843
                and     ebp, ecx
15844
                xor     ebx, [esp+4]
15845
                xor     ebp, edx
15846
                xor     ecx, edi
15847
                xor     ebx, ebp
15848
                and     ecx, [esp]
15849
                and     ebx, [esp+1Ch]
15850
                ror     eax, 0Bh
15851
                xor     ecx, edx
15852
                mov     ebp, [esi+68h]
15853
                xor     ecx, ebx
15854
                and     edi, [esp+18h]
15855
                xor     ecx, edi
15856
                lea     ebp, [eax+ebp-41AB9931h]
15857
                ror     ecx, 7
15858
                add     ebp, ecx
15859
                mov     eax, [esp+10h]
15860
                mov     [esp+14h], ebp
15861
                mov     ebx, [esp+1Ch]
15862
                mov     edi, [esp+8]
15863
                xor     ebp, 0FFFFFFFFh
15864
                mov     ecx, [esp+0Ch]
15865
                and     ebx, edi
15866
                mov     edx, [esp+4]
15867
                and     ebp, ecx
15868
                xor     ebx, [esp]
15869
                xor     ebp, edx
15870
                xor     ecx, edi
15871
                xor     ebx, ebp
15872
                and     ecx, [esp+1Ch]
15873
                and     ebx, [esp+18h]
15874
                ror     eax, 0Bh
15875
                xor     ecx, edx
15876
                mov     ebp, [esi+48h]
15877
                xor     ecx, ebx
15878
                and     edi, [esp+14h]
15879
                xor     ecx, edi
15880
                lea     ebp, [eax+ebp+34E90C6Ch]
15881
                ror     ecx, 7
15882
                add     ebp, ecx
15883
                mov     eax, [esp+0Ch]
15884
                mov     [esp+10h], ebp
15885
                mov     ebx, [esp+18h]
15886
                mov     edi, [esp+4]
15887
                xor     ebp, 0FFFFFFFFh
15888
                mov     ecx, [esp+8]
15889
                and     ebx, edi
15890
                mov     edx, [esp]
15891
                and     ebp, ecx
15892
                xor     ebx, [esp+1Ch]
15893
                xor     ebp, edx
15894
                xor     ecx, edi
15895
                xor     ebx, ebp
15896
                and     ecx, [esp+18h]
15897
                and     ebx, [esp+14h]
15898
                ror     eax, 0Bh
15899
                xor     ecx, edx
15900
                mov     ebp, [esi+2Ch]
15901
                xor     ecx, ebx
15902
                and     edi, [esp+10h]
15903
                xor     ecx, edi
15904
                lea     ebp, [eax+ebp-3F53D649h]
15905
                ror     ecx, 7
15906
                add     ebp, ecx
15907
                mov     eax, [esp+8]
15908
                mov     [esp+0Ch], ebp
15909
                mov     ebx, [esp+14h]
15910
                mov     edi, [esp]
15911
                xor     ebp, 0FFFFFFFFh
15912
                mov     ecx, [esp+4]
15913
                and     ebx, edi
15914
                mov     edx, [esp+1Ch]
15915
                and     ebp, ecx
15916
                xor     ebx, [esp+18h]
15917
                xor     ebp, edx
15918
                xor     ecx, edi
15919
                xor     ebx, ebp
15920
                and     ecx, [esp+14h]
15921
                and     ebx, [esp+10h]
15922
                ror     eax, 0Bh
15923
                xor     ecx, edx
15924
                mov     ebp, [esi+70h]
15925
                xor     ecx, ebx
15926
                and     edi, [esp+0Ch]
15927
                xor     ecx, edi
15928
                lea     ebp, [eax+ebp-3683AF23h]
15929
                ror     ecx, 7
15930
                add     ebp, ecx
15931
                mov     eax, [esp+4]
15932
                mov     [esp+8], ebp
15933
                mov     ebx, [esp+10h]
15934
                mov     edi, [esp+1Ch]
15935
                xor     ebp, 0FFFFFFFFh
15936
                mov     ecx, [esp]
15937
                and     ebx, edi
15938
                mov     edx, [esp+18h]
15939
                and     ebp, ecx
15940
                xor     ebx, [esp+14h]
15941
                xor     ebp, edx
15942
                xor     ecx, edi
15943
                xor     ebx, ebp
15944
                and     ecx, [esp+10h]
15945
                and     ebx, [esp+0Ch]
15946
                ror     eax, 0Bh
15947
                xor     ecx, edx
15948
                mov     ebp, [esi+1Ch]
15949
                xor     ecx, ebx
15950
                and     edi, [esp+8]
15951
                xor     ecx, edi
15952
                lea     ebp, [eax+ebp+3F84D5B5h]
15953
                ror     ecx, 7
15954
                add     ebp, ecx
15955
                mov     eax, [esp]
15956
                mov     [esp+4], ebp
15957
                mov     ebx, [esp+0Ch]
15958
                mov     edi, [esp+18h]
15959
                xor     ebp, 0FFFFFFFFh
15960
                mov     ecx, [esp+1Ch]
15961
                and     ebx, edi
15962
                mov     edx, [esp+14h]
15963
                and     ebp, ecx
15964
                xor     ebx, [esp+10h]
15965
                xor     ebp, edx
15966
                xor     ecx, edi
15967
                xor     ebx, ebp
15968
                and     ecx, [esp+0Ch]
15969
                and     ebx, [esp+8]
15970
                ror     eax, 0Bh
15971
                xor     ecx, edx
15972
                mov     ebp, [esi+40h]
15973
                xor     ecx, ebx
15974
                and     edi, [esp+4]
15975
                xor     ecx, edi
15976
                lea     ebp, [eax+ebp-4AB8F6E9h]
15977
                ror     ecx, 7
15978
                add     ebp, ecx
15979
                mov     eax, [esp+1Ch]
15980
                mov     [esp], ebp
15981
                mov     ebx, [esp+8]
15982
                mov     edi, [esp+14h]
15983
                xor     ebp, 0FFFFFFFFh
15984
                mov     ecx, [esp+18h]
15985
                and     ebx, edi
15986
                mov     edx, [esp+10h]
15987
                and     ebp, ecx
15988
                xor     ebx, [esp+0Ch]
15989
                xor     ebp, edx
15990
                xor     ecx, edi
15991
                xor     ebx, ebp
15992
                and     ecx, [esp+8]
15993
                and     ebx, [esp+4]
15994
                ror     eax, 0Bh
15995
                xor     ecx, edx
15996
                mov     ebp, [esi]
15997
                xor     ecx, ebx
15998
                and     edi, [esp]
15999
                xor     ecx, edi
16000
                lea     ebp, [eax+ebp-6DE92A27h]
16001
                ror     ecx, 7
16002
                add     ebp, ecx
16003
                mov     eax, [esp+18h]
16004
                mov     [esp+1Ch], ebp
16005
                mov     ebx, [esp+4]
16006
                mov     edi, [esp+10h]
16007
                xor     ebp, 0FFFFFFFFh
16008
                mov     ecx, [esp+14h]
16009
                and     ebx, edi
16010
                mov     edx, [esp+0Ch]
16011
                and     ebp, ecx
16012
                xor     ebx, [esp+8]
16013
                xor     ebp, edx
16014
                xor     ecx, edi
16015
                xor     ebx, ebp
16016
                and     ecx, [esp+4]
16017
                and     ebx, [esp]
16018
                ror     eax, 0Bh
16019
                xor     ecx, edx
16020
                mov     ebp, [esi+5Ch]
16021
                xor     ecx, ebx
16022
                and     edi, [esp+1Ch]
16023
                xor     ecx, edi
16024
                lea     ebp, [eax+ebp-768604E5h]
16025
                ror     ecx, 7
16026
                add     ebp, ecx
16027
                mov     eax, [esp+14h]
16028
                mov     [esp+18h], ebp
16029
                mov     ebx, [esp]
16030
                mov     edi, [esp+0Ch]
16031
                xor     ebp, 0FFFFFFFFh
16032
                mov     ecx, [esp+10h]
16033
                and     ebx, edi
16034
                mov     edx, [esp+8]
16035
                and     ebp, ecx
16036
                xor     ebx, [esp+4]
16037
                xor     ebp, edx
16038
                xor     ecx, edi
16039
                xor     ebx, ebp
16040
                and     ecx, [esp]
16041
                and     ebx, [esp+1Ch]
16042
                ror     eax, 0Bh
16043
                xor     ecx, edx
16044
                mov     ebp, [esi+50h]
16045
                xor     ecx, ebx
16046
                and     edi, [esp+18h]
16047
                xor     ecx, edi
16048
                lea     ebp, [eax+ebp-2ECEF45Ah]
16049
                ror     ecx, 7
16050
                add     ebp, ecx
16051
                mov     eax, [esp+10h]
16052
                mov     [esp+14h], ebp
16053
                mov     ebx, [esp+1Ch]
16054
                mov     edi, [esp+8]
16055
                xor     ebp, 0FFFFFFFFh
16056
                mov     ecx, [esp+0Ch]
16057
                and     ebx, edi
16058
                mov     edx, [esp+4]
16059
                and     ebp, ecx
16060
                xor     ebx, [esp]
16061
                xor     ebp, edx
16062
                xor     ecx, edi
16063
                xor     ebx, ebp
16064
                and     ecx, [esp+1Ch]
16065
                and     ebx, [esp+18h]
16066
                ror     eax, 0Bh
16067
                xor     ecx, edx
16068
                mov     ebp, [esi+58h]
16069
                xor     ecx, ebx
16070
                and     edi, [esp+14h]
16071
                xor     ecx, edi
16072
                lea     ebp, [eax+ebp-67204A54h]
16073
                ror     ecx, 7
16074
                add     ebp, ecx
16075
                mov     eax, [esp+0Ch]
16076
                mov     [esp+10h], ebp
16077
                mov     ebx, [esp+18h]
16078
                mov     edi, [esp+4]
16079
                xor     ebp, 0FFFFFFFFh
16080
                mov     ecx, [esp+8]
16081
                and     ebx, edi
16082
                mov     edx, [esp]
16083
                and     ebp, ecx
16084
                xor     ebx, [esp+1Ch]
16085
                xor     ebp, edx
16086
                xor     ecx, edi
16087
                xor     ebx, ebp
16088
                and     ecx, [esp+18h]
16089
                and     ebx, [esp+14h]
16090
                ror     eax, 0Bh
16091
                xor     ecx, edx
16092
                mov     ebp, [esi+4]
16093
                xor     ecx, ebx
16094
                and     edi, [esp+10h]
16095
                xor     ecx, edi
16096
                lea     ebp, [eax+ebp+2FFD72DBh]
16097
                ror     ecx, 7
16098
                add     ebp, ecx
16099
                mov     eax, [esp+8]
16100
                mov     [esp+0Ch], ebp
16101
                mov     ebx, [esp+14h]
16102
                mov     edi, [esp]
16103
                xor     ebp, 0FFFFFFFFh
16104
                mov     ecx, [esp+4]
16105
                and     ebx, edi
16106
                mov     edx, [esp+1Ch]
16107
                and     ebp, ecx
16108
                xor     ebx, [esp+18h]
16109
                xor     ebp, edx
16110
                xor     ecx, edi
16111
                xor     ebx, ebp
16112
                and     ecx, [esp+14h]
16113
                and     ebx, [esp+10h]
16114
                ror     eax, 0Bh
16115
                xor     ecx, edx
16116
                mov     ebp, [esi+28h]
16117
                xor     ecx, ebx
16118
                and     edi, [esp+0Ch]
16119
                xor     ecx, edi
16120
                lea     ebp, [eax+ebp-2FE52049h]
16121
                ror     ecx, 7
16122
                add     ebp, ecx
16123
                mov     eax, [esp+4]
16124
                mov     [esp+8], ebp
16125
                mov     ebx, [esp+10h]
16126
                mov     edi, [esp+1Ch]
16127
                xor     ebp, 0FFFFFFFFh
16128
                mov     ecx, [esp]
16129
                and     ebx, edi
16130
                mov     edx, [esp+18h]
16131
                and     ebp, ecx
16132
                xor     ebx, [esp+14h]
16133
                xor     ebp, edx
16134
                xor     ecx, edi
16135
                xor     ebx, ebp
16136
                and     ecx, [esp+10h]
16137
                and     ebx, [esp+0Ch]
16138
                ror     eax, 0Bh
16139
                xor     ecx, edx
16140
                mov     ebp, [esi+10h]
16141
                xor     ecx, ebx
16142
                and     edi, [esp+8]
16143
                xor     ecx, edi
16144
                lea     ebp, [eax+ebp-471E5013h]
16145
                ror     ecx, 7
16146
                add     ebp, ecx
16147
                mov     eax, [esp]
16148
                mov     [esp+4], ebp
16149
                mov     ebx, [esp+0Ch]
16150
                mov     edi, [esp+18h]
16151
                xor     ebp, 0FFFFFFFFh
16152
                mov     ecx, [esp+1Ch]
16153
                and     ebx, edi
16154
                mov     edx, [esp+14h]
16155
                and     ebp, ecx
16156
                xor     ebx, [esp+10h]
16157
                xor     ebp, edx
16158
                xor     ecx, edi
16159
                xor     ebx, ebp
16160
                and     ecx, [esp+0Ch]
16161
                and     ebx, [esp+8]
16162
                ror     eax, 0Bh
16163
                xor     ecx, edx
16164
                mov     ebp, [esi+20h]
16165
                xor     ecx, ebx
16166
                and     edi, [esp+4]
16167
                xor     ecx, edi
16168
                lea     ebp, [eax+ebp+6A267E96h]
16169
                ror     ecx, 7
16170
                add     ebp, ecx
16171
                mov     eax, [esp+1Ch]
16172
                mov     [esp], ebp
16173
                mov     ebx, [esp+8]
16174
                mov     edi, [esp+14h]
16175
                xor     ebp, 0FFFFFFFFh
16176
                mov     ecx, [esp+18h]
16177
                and     ebx, edi
16178
                mov     edx, [esp+10h]
16179
                and     ebp, ecx
16180
                xor     ebx, [esp+0Ch]
16181
                xor     ebp, edx
16182
                xor     ecx, edi
16183
                xor     ebx, ebp
16184
                and     ecx, [esp+8]
16185
                and     ebx, [esp+4]
16186
                ror     eax, 0Bh
16187
                xor     ecx, edx
16188
                mov     ebp, [esi+78h]
16189
                xor     ecx, ebx
16190
                and     edi, [esp]
16191
                xor     ecx, edi
16192
                lea     ebp, [eax+ebp-45836FBBh]
16193
                ror     ecx, 7
16194
                add     ebp, ecx
16195
                mov     eax, [esp+18h]
16196
                mov     [esp+1Ch], ebp
16197
                mov     ebx, [esp+4]
16198
                mov     edi, [esp+10h]
16199
                xor     ebp, 0FFFFFFFFh
16200
                mov     ecx, [esp+14h]
16201
                and     ebx, edi
16202
                mov     edx, [esp+0Ch]
16203
                and     ebp, ecx
16204
                xor     ebx, [esp+8]
16205
                xor     ebp, edx
16206
                xor     ecx, edi
16207
                xor     ebx, ebp
16208
                and     ecx, [esp+4]
16209
                and     ebx, [esp]
16210
                ror     eax, 0Bh
16211
                xor     ecx, edx
16212
                mov     ebp, [esi+0Ch]
16213
                xor     ecx, ebx
16214
                and     edi, [esp+1Ch]
16215
                xor     ecx, edi
16216
                lea     ebp, [eax+ebp-0ED38067h]
16217
                ror     ecx, 7
16218
                add     ebp, ecx
16219
                mov     eax, [esp+14h]
16220
                mov     [esp+18h], ebp
16221
                mov     ebx, [esp]
16222
                mov     edi, [esp+0Ch]
16223
                xor     ebp, 0FFFFFFFFh
16224
                mov     ecx, [esp+10h]
16225
                and     ebx, edi
16226
                mov     edx, [esp+8]
16227
                and     ebp, ecx
16228
                xor     ebx, [esp+4]
16229
                xor     ebp, edx
16230
                xor     ecx, edi
16231
                xor     ebx, ebp
16232
                and     ecx, [esp]
16233
                and     ebx, [esp+1Ch]
16234
                ror     eax, 0Bh
16235
                xor     ecx, edx
16236
                mov     ebp, [esi+54h]
16237
                xor     ecx, ebx
16238
                and     edi, [esp+18h]
16239
                xor     ecx, edi
16240
                lea     ebp, [eax+ebp+24A19947h]
16241
                ror     ecx, 7
16242
                add     ebp, ecx
16243
                mov     eax, [esp+10h]
16244
                mov     [esp+14h], ebp
16245
                mov     ebx, [esp+1Ch]
16246
                mov     edi, [esp+8]
16247
                xor     ebp, 0FFFFFFFFh
16248
                mov     ecx, [esp+0Ch]
16249
                and     ebx, edi
16250
                mov     edx, [esp+4]
16251
                and     ebp, ecx
16252
                xor     ebx, [esp]
16253
                xor     ebp, edx
16254
                xor     ecx, edi
16255
                xor     ebx, ebp
16256
                and     ecx, [esp+1Ch]
16257
                and     ebx, [esp+18h]
16258
                ror     eax, 0Bh
16259
                xor     ecx, edx
16260
                mov     ebp, [esi+24h]
16261
                xor     ecx, ebx
16262
                and     edi, [esp+14h]
16263
                xor     ecx, edi
16264
                lea     ebp, [eax+ebp-4C6E9309h]
16265
                ror     ecx, 7
16266
                add     ebp, ecx
16267
                mov     eax, [esp+0Ch]
16268
                mov     [esp+10h], ebp
16269
                mov     ebx, [esp+18h]
16270
                mov     edi, [esp+4]
16271
                xor     ebp, 0FFFFFFFFh
16272
                mov     ecx, [esp+8]
16273
                and     ebx, edi
16274
                mov     edx, [esp]
16275
                and     ebp, ecx
16276
                xor     ebx, [esp+1Ch]
16277
                xor     ebp, edx
16278
                xor     ecx, edi
16279
                xor     ebx, ebp
16280
                and     ecx, [esp+18h]
16281
                and     ebx, [esp+14h]
16282
                ror     eax, 0Bh
16283
                xor     ecx, edx
16284
                mov     ebp, [esi+44h]
16285
                xor     ecx, ebx
16286
                and     edi, [esp+10h]
16287
                xor     ecx, edi
16288
                lea     ebp, [eax+ebp+801F2E2h]
16289
                ror     ecx, 7
16290
                add     ebp, ecx
16291
                mov     eax, [esp+8]
16292
                mov     [esp+0Ch], ebp
16293
                mov     ebx, [esp+14h]
16294
                mov     edi, [esp]
16295
                xor     ebp, 0FFFFFFFFh
16296
                mov     ecx, [esp+4]
16297
                and     ebx, edi
16298
                mov     edx, [esp+1Ch]
16299
                and     ebp, ecx
16300
                xor     ebx, [esp+18h]
16301
                xor     ebp, edx
16302
                xor     ecx, edi
16303
                xor     ebx, ebp
16304
                and     ecx, [esp+14h]
16305
                and     ebx, [esp+10h]
16306
                ror     eax, 0Bh
16307
                xor     ecx, edx
16308
                mov     ebp, [esi+60h]
16309
                xor     ecx, ebx
16310
                and     edi, [esp+0Ch]
16311
                xor     ecx, edi
16312
                lea     ebp, [eax+ebp-7A7103EAh]
16313
                ror     ecx, 7
16314
                add     ebp, ecx
16315
                mov     eax, [esp+4]
16316
                mov     [esp+8], ebp
16317
                mov     ebx, [esp+10h]
16318
                mov     edi, [esp+1Ch]
16319
                xor     ebp, 0FFFFFFFFh
16320
                mov     ecx, [esp]
16321
                and     ebx, edi
16322
                mov     edx, [esp+18h]
16323
                and     ebp, ecx
16324
                xor     ebx, [esp+14h]
16325
                xor     ebp, edx
16326
                xor     ecx, edi
16327
                xor     ebx, ebp
16328
                and     ecx, [esp+10h]
16329
                and     ebx, [esp+0Ch]
16330
                ror     eax, 0Bh
16331
                xor     ecx, edx
16332
                mov     ebp, [esi+74h]
16333
                xor     ecx, ebx
16334
                and     edi, [esp+8]
16335
                xor     ecx, edi
16336
                lea     ebp, [eax+ebp+636920D8h]
16337
                ror     ecx, 7
16338
                add     ebp, ecx
16339
                mov     eax, [esp]
16340
                mov     [esp+4], ebp
16341
                mov     ebx, [esp+0Ch]
16342
                mov     edi, [esp+18h]
16343
                xor     ebp, 0FFFFFFFFh
16344
                mov     ecx, [esp+1Ch]
16345
                and     ebx, edi
16346
                mov     edx, [esp+14h]
16347
                and     ebp, ecx
16348
                xor     ebx, [esp+10h]
16349
                xor     ebp, edx
16350
                xor     ecx, edi
16351
                xor     ebx, ebp
16352
                and     ecx, [esp+0Ch]
16353
                and     ebx, [esp+8]
16354
                ror     eax, 0Bh
16355
                xor     ecx, edx
16356
                mov     ebp, [esi+18h]
16357
                xor     ecx, ebx
16358
                and     edi, [esp+4]
16359
                xor     ecx, edi
16360
                lea     ebp, [eax+ebp+71574E69h]
16361
                ror     ecx, 7
16362
                add     ebp, ecx
16363
                mov     eax, [esp+1Ch]
16364
                mov     [esp], ebp
16365
                mov     ebx, [esp+8]
16366
                mov     edi, [esp+14h]
16367
                xor     ebp, 0FFFFFFFFh
16368
                mov     ecx, [esp+18h]
16369
                and     ebx, edi
16370
                mov     edx, [esp+10h]
16371
                and     ebp, ecx
16372
                xor     ebx, [esp+0Ch]
16373
                xor     ebp, edx
16374
                xor     ecx, edi
16375
                xor     ebx, ebp
16376
                and     ecx, [esp+8]
16377
                and     ebx, [esp+4]
16378
                ror     eax, 0Bh
16379
                xor     ecx, edx
16380
                mov     ebp, [esi+4Ch]
16381
                xor     ecx, ebx
16382
                and     edi, [esp]
16383
                xor     ecx, edi
16384
                lea     ebp, [eax+ebp-5BA7015Dh]
16385
                ror     ecx, 7
16386
                add     ebp, ecx
16387
                mov     eax, [esp+18h]
16388
                mov     [esp+1Ch], ebp
16389
                mov     ebx, [esp+4]
16390
                mov     edi, [esp+10h]
16391
                xor     ebp, 0FFFFFFFFh
16392
                mov     ecx, [esp+14h]
16393
                and     ebx, edi
16394
                mov     edx, [esp+0Ch]
16395
                and     ebp, ecx
16396
                xor     ebx, [esp+8]
16397
                xor     ebp, edx
16398
                xor     ecx, edi
16399
                xor     ebx, ebp
16400
                and     ecx, [esp+4]
16401
                and     ebx, [esp]
16402
                ror     eax, 0Bh
16403
                xor     ecx, edx
16404
                mov     ebp, [esi+30h]
16405
                xor     ecx, ebx
16406
                and     edi, [esp+1Ch]
16407
                xor     ecx, edi
16408
                lea     ebp, [eax+ebp-0B6CC282h]
16409
                ror     ecx, 7
16410
                add     ebp, ecx
16411
                mov     eax, [esp+14h]
16412
                mov     [esp+18h], ebp
16413
                mov     ebx, [esp]
16414
                mov     edi, [esp+0Ch]
16415
                xor     ebp, 0FFFFFFFFh
16416
                mov     ecx, [esp+10h]
16417
                and     ebx, edi
16418
                mov     edx, [esp+8]
16419
                and     ebp, ecx
16420
                xor     ebx, [esp+4]
16421
                xor     ebp, edx
16422
                xor     ecx, edi
16423
                xor     ebx, ebp
16424
                and     ecx, [esp]
16425
                and     ebx, [esp+1Ch]
16426
                ror     eax, 0Bh
16427
                xor     ecx, edx
16428
                mov     ebp, [esi+3Ch]
16429
                xor     ecx, ebx
16430
                and     edi, [esp+18h]
16431
                xor     ecx, edi
16432
                lea     ebp, [eax+ebp+0D95748Fh]
16433
                ror     ecx, 7
16434
                add     ebp, ecx
16435
                mov     eax, [esp+10h]
16436
                mov     [esp+14h], ebp
16437
                mov     ebx, [esp+1Ch]
16438
                mov     edi, [esp+8]
16439
                xor     ebp, 0FFFFFFFFh
16440
                mov     ecx, [esp+0Ch]
16441
                and     ebx, edi
16442
                mov     edx, [esp+4]
16443
                and     ebp, ecx
16444
                xor     ebx, [esp]
16445
                xor     ebp, edx
16446
                xor     ecx, edi
16447
                xor     ebx, ebp
16448
                and     ecx, [esp+1Ch]
16449
                and     ebx, [esp+18h]
16450
                ror     eax, 0Bh
16451
                xor     ecx, edx
16452
                mov     ebp, [esi+34h]
16453
                xor     ecx, ebx
16454
                and     edi, [esp+14h]
16455
                xor     ecx, edi
16456
                lea     ebp, [eax+ebp+728EB658h]
16457
                ror     ecx, 7
16458
                add     ebp, ecx
16459
                mov     eax, [esp+0Ch]
16460
                mov     [esp+10h], ebp
16461
                mov     ebx, [esp+18h]
16462
                mov     edi, [esp+4]
16463
                xor     ebp, 0FFFFFFFFh
16464
                mov     ecx, [esp+8]
16465
                and     ebx, edi
16466
                mov     edx, [esp]
16467
                and     ebp, ecx
16468
                xor     ebx, [esp+1Ch]
16469
                xor     ebp, edx
16470
                xor     ecx, edi
16471
                xor     ebx, ebp
16472
                and     ecx, [esp+18h]
16473
                and     ebx, [esp+14h]
16474
                ror     eax, 0Bh
16475
                xor     ecx, edx
16476
                mov     ebp, [esi+8]
16477
                xor     ecx, ebx
16478
                and     edi, [esp+10h]
16479
                xor     ecx, edi
16480
                lea     ebp, [eax+ebp+718BCD58h]
16481
                ror     ecx, 7
16482
                add     ebp, ecx
16483
                mov     eax, [esp+8]
16484
                mov     [esp+0Ch], ebp
16485
                mov     ebx, [esp+14h]
16486
                mov     edi, [esp]
16487
                xor     ebp, 0FFFFFFFFh
16488
                mov     ecx, [esp+4]
16489
                and     ebx, edi
16490
                mov     edx, [esp+1Ch]
16491
                and     ebp, ecx
16492
                xor     ebx, [esp+18h]
16493
                xor     ebp, edx
16494
                xor     ecx, edi
16495
                xor     ebx, ebp
16496
                and     ecx, [esp+14h]
16497
                and     ebx, [esp+10h]
16498
                ror     eax, 0Bh
16499
                xor     ecx, edx
16500
                mov     ebp, [esi+64h]
16501
                xor     ecx, ebx
16502
                and     edi, [esp+0Ch]
16503
                xor     ecx, edi
16504
                lea     ebp, [eax+ebp-7DEAB512h]
16505
                ror     ecx, 7
16506
                add     ebp, ecx
16507
                mov     eax, [esp+4]
16508
                mov     [esp+8], ebp
16509
                mov     ebx, [esp+10h]
16510
                mov     edi, [esp+1Ch]
16511
                xor     ebp, 0FFFFFFFFh
16512
                mov     ecx, [esp]
16513
                and     ebx, edi
16514
                mov     edx, [esp+18h]
16515
                and     ebp, ecx
16516
                xor     ebx, [esp+14h]
16517
                xor     ebp, edx
16518
                xor     ecx, edi
16519
                xor     ebx, ebp
16520
                and     ecx, [esp+10h]
16521
                and     ebx, [esp+0Ch]
16522
                ror     eax, 0Bh
16523
                xor     ecx, edx
16524
                mov     ebp, [esi+7Ch]
16525
                xor     ecx, ebx
16526
                and     edi, [esp+8]
16527
                xor     ecx, edi
16528
                lea     ebp, [eax+ebp+7B54A41Dh]
16529
                ror     ecx, 7
16530
                add     ebp, ecx
16531
                mov     eax, [esp]
16532
                mov     [esp+4], ebp
16533
                mov     ebx, [esp+0Ch]
16534
                mov     edi, [esp+18h]
16535
                xor     ebp, 0FFFFFFFFh
16536
                mov     ecx, [esp+1Ch]
16537
                and     ebx, edi
16538
                mov     edx, [esp+14h]
16539
                and     ebp, ecx
16540
                xor     ebx, [esp+10h]
16541
                xor     ebp, edx
16542
                xor     ecx, edi
16543
                xor     ebx, ebp
16544
                and     ecx, [esp+0Ch]
16545
                and     ebx, [esp+8]
16546
                ror     eax, 0Bh
16547
                xor     ecx, edx
16548
                mov     ebp, [esi+6Ch]
16549
                xor     ecx, ebx
16550
                and     edi, [esp+4]
16551
                xor     ecx, edi
16552
                lea     ebp, [eax+ebp-3DA5A64Bh]
16553
                ror     ecx, 7
16554
                add     ebp, ecx
16555
                mov     eax, [esp+1Ch]
16556
                mov     [esp], ebp
16557
                mov     ebp, [esp+14h]
16558
                mov     ebx, [esp]
16559
                mov     ecx, [esp+8]
16560
                mov     edi, ebx
16561
                and     ebx, [esp+10h]
16562
                and     edi, ecx
16563
                xor     ebx, ebp
16564
                ror     eax, 0Bh
16565
                xor     edi, ebp
16566
                mov     ebp, [esi+4Ch]
16567
                xor     edi, [esp+4]
16568
                and     ecx, [esp+0Ch]
16569
                and     edi, [esp+18h]
16570
                xor     ecx, ebx
16571
                lea     ebp, [eax+ebp-63CF2AC7h]
16572
                xor     ecx, edi
16573
                ror     ecx, 7
16574
                add     ebp, ecx
16575
                mov     eax, [esp+18h]
16576
                mov     [esp+1Ch], ebp
16577
                mov     ebp, [esp+10h]
16578
                mov     ebx, [esp+1Ch]
16579
                mov     ecx, [esp+4]
16580
                mov     edi, ebx
16581
                and     ebx, [esp+0Ch]
16582
                and     edi, ecx
16583
                xor     ebx, ebp
16584
                ror     eax, 0Bh
16585
                xor     edi, ebp
16586
                mov     ebp, [esi+24h]
16587
                xor     edi, [esp]
16588
                and     ecx, [esp+8]
16589
                and     edi, [esp+14h]
16590
                xor     ecx, ebx
16591
                lea     ebp, [eax+ebp+2AF26013h]
16592
                xor     ecx, edi
16593
                ror     ecx, 7
16594
                add     ebp, ecx
16595
                mov     eax, [esp+14h]
16596
                mov     [esp+18h], ebp
16597
                mov     ebp, [esp+0Ch]
16598
                mov     ebx, [esp+18h]
16599
                mov     ecx, [esp]
16600
                mov     edi, ebx
16601
                and     ebx, [esp+8]
16602
                and     edi, ecx
16603
                xor     ebx, ebp
16604
                ror     eax, 0Bh
16605
                xor     edi, ebp
16606
                mov     ebp, [esi+10h]
16607
                xor     edi, [esp+1Ch]
16608
                and     ecx, [esp+4]
16609
                and     edi, [esp+10h]
16610
                xor     ecx, ebx
16611
                lea     ebp, [eax+ebp-3A2E4FDDh]
16612
                xor     ecx, edi
16613
                ror     ecx, 7
16614
                add     ebp, ecx
16615
                mov     eax, [esp+10h]
16616
                mov     [esp+14h], ebp
16617
                mov     ebp, [esp+8]
16618
                mov     ebx, [esp+14h]
16619
                mov     ecx, [esp+1Ch]
16620
                mov     edi, ebx
16621
                and     ebx, [esp+4]
16622
                and     edi, ecx
16623
                xor     ebx, ebp
16624
                ror     eax, 0Bh
16625
                xor     edi, ebp
16626
                mov     ebp, [esi+50h]
16627
                xor     edi, [esp+18h]
16628
                and     ecx, [esp]
16629
                and     edi, [esp+0Ch]
16630
                xor     ecx, ebx
16631
                lea     ebp, [eax+ebp+286085F0h]
16632
                xor     ecx, edi
16633
                ror     ecx, 7
16634
                add     ebp, ecx
16635
                mov     eax, [esp+0Ch]
16636
                mov     [esp+10h], ebp
16637
                mov     ebp, [esp+4]
16638
                mov     ebx, [esp+10h]
16639
                mov     ecx, [esp+18h]
16640
                mov     edi, ebx
16641
                and     ebx, [esp]
16642
                and     edi, ecx
16643
                xor     ebx, ebp
16644
                ror     eax, 0Bh
16645
                xor     edi, ebp
16646
                mov     ebp, [esi+70h]
16647
                xor     edi, [esp+14h]
16648
                and     ecx, [esp+1Ch]
16649
                and     edi, [esp+8]
16650
                xor     ecx, ebx
16651
                lea     ebp, [eax+ebp-35BE86E8h]
16652
                xor     ecx, edi
16653
                ror     ecx, 7
16654
                add     ebp, ecx
16655
                mov     eax, [esp+8]
16656
                mov     [esp+0Ch], ebp
16657
                mov     ebp, [esp]
16658
                mov     ebx, [esp+0Ch]
16659
                mov     ecx, [esp+14h]
16660
                mov     edi, ebx
16661
                and     ebx, [esp+1Ch]
16662
                and     edi, ecx
16663
                xor     ebx, ebp
16664
                ror     eax, 0Bh
16665
                xor     edi, ebp
16666
                mov     ebp, [esi+44h]
16667
                xor     edi, [esp+10h]
16668
                and     ecx, [esp+18h]
16669
                and     edi, [esp+4]
16670
                xor     ecx, ebx
16671
                lea     ebp, [eax+ebp-4724C711h]
16672
                xor     ecx, edi
16673
                ror     ecx, 7
16674
                add     ebp, ecx
16675
                mov     eax, [esp+4]
16676
                mov     [esp+8], ebp
16677
                mov     ebp, [esp+1Ch]
16678
                mov     ebx, [esp+8]
16679
                mov     ecx, [esp+10h]
16680
                mov     edi, ebx
16681
                and     ebx, [esp+18h]
16682
                and     edi, ecx
16683
                xor     ebx, ebp
16684
                ror     eax, 0Bh
16685
                xor     edi, ebp
16686
                mov     ebp, [esi+20h]
16687
                xor     edi, [esp+0Ch]
16688
                and     ecx, [esp+14h]
16689
                and     edi, [esp]
16690
                xor     ecx, ebx
16691
                lea     ebp, [eax+ebp-71862350h]
16692
                xor     ecx, edi
16693
                ror     ecx, 7
16694
                add     ebp, ecx
16695
                mov     eax, [esp]
16696
                mov     [esp+4], ebp
16697
                mov     ebp, [esp+18h]
16698
                mov     ebx, [esp+4]
16699
                mov     ecx, [esp+0Ch]
16700
                mov     edi, ebx
16701
                and     ebx, [esp+14h]
16702
                and     edi, ecx
16703
                xor     ebx, ebp
16704
                ror     eax, 0Bh
16705
                xor     edi, ebp
16706
                mov     ebp, [esi+58h]
16707
                xor     edi, [esp+8]
16708
                and     ecx, [esp+10h]
16709
                and     edi, [esp+1Ch]
16710
                xor     ecx, ebx
16711
                lea     ebp, [eax+ebp+603A180Eh]
16712
                xor     ecx, edi
16713
                ror     ecx, 7
16714
                add     ebp, ecx
16715
                mov     eax, [esp+1Ch]
16716
                mov     [esp], ebp
16717
                mov     ebp, [esp+14h]
16718
                mov     ebx, [esp]
16719
                mov     ecx, [esp+8]
16720
                mov     edi, ebx
16721
                and     ebx, [esp+10h]
16722
                and     edi, ecx
16723
                xor     ebx, ebp
16724
                ror     eax, 0Bh
16725
                xor     edi, ebp
16726
                mov     ebp, [esi+74h]
16727
                xor     edi, [esp+4]
16728
                and     ecx, [esp+0Ch]
16729
                and     edi, [esp+18h]
16730
                xor     ecx, ebx
16731
                lea     ebp, [eax+ebp+6C9E0E8Bh]
16732
                xor     ecx, edi
16733
                ror     ecx, 7
16734
                add     ebp, ecx
16735
                mov     eax, [esp+18h]
16736
                mov     [esp+1Ch], ebp
16737
                mov     ebp, [esp+10h]
16738
                mov     ebx, [esp+1Ch]
16739
                mov     ecx, [esp+4]
16740
                mov     edi, ebx
16741
                and     ebx, [esp+0Ch]
16742
                and     edi, ecx
16743
                xor     ebx, ebp
16744
                ror     eax, 0Bh
16745
                xor     edi, ebp
16746
                mov     ebp, [esi+38h]
16747
                xor     edi, [esp]
16748
                and     ecx, [esp+8]
16749
                and     edi, [esp+14h]
16750
                xor     ecx, ebx
16751
                lea     ebp, [eax+ebp-4FE175C2h]
16752
                xor     ecx, edi
16753
                ror     ecx, 7
16754
                add     ebp, ecx
16755
                mov     eax, [esp+14h]
16756
                mov     [esp+18h], ebp
16757
                mov     ebp, [esp+0Ch]
16758
                mov     ebx, [esp+18h]
16759
                mov     ecx, [esp]
16760
                mov     edi, ebx
16761
                and     ebx, [esp+8]
16762
                and     edi, ecx
16763
                xor     ebx, ebp
16764
                ror     eax, 0Bh
16765
                xor     edi, ebp
16766
                mov     ebp, [esi+64h]
16767
                xor     edi, [esp+1Ch]
16768
                and     ecx, [esp+4]
16769
                and     edi, [esp+10h]
16770
                xor     ecx, ebx
16771
                lea     ebp, [eax+ebp-28EA883Fh]
16772
                xor     ecx, edi
16773
                ror     ecx, 7
16774
                add     ebp, ecx
16775
                mov     eax, [esp+10h]
16776
                mov     [esp+14h], ebp
16777
                mov     ebp, [esp+8]
16778
                mov     ebx, [esp+14h]
16779
                mov     ecx, [esp+1Ch]
16780
                mov     edi, ebx
16781
                and     ebx, [esp+4]
16782
                and     edi, ecx
16783
                xor     ebx, ebp
16784
                ror     eax, 0Bh
16785
                xor     edi, ebp
16786
                mov     ebp, [esi+30h]
16787
                xor     edi, [esp+18h]
16788
                and     ecx, [esp]
16789
                and     edi, [esp+0Ch]
16790
                xor     ecx, ebx
16791
                lea     ebp, [eax+ebp-42CEB4D9h]
16792
                xor     ecx, edi
16793
                ror     ecx, 7
16794
                add     ebp, ecx
16795
                mov     eax, [esp+0Ch]
16796
                mov     [esp+10h], ebp
16797
                mov     ebp, [esp+4]
16798
                mov     ebx, [esp+10h]
16799
                mov     ecx, [esp+18h]
16800
                mov     edi, ebx
16801
                and     ebx, [esp]
16802
                and     edi, ecx
16803
                xor     ebx, ebp
16804
                ror     eax, 0Bh
16805
                xor     edi, ebp
16806
                mov     ebp, [esi+60h]
16807
                xor     edi, [esp+14h]
16808
                and     ecx, [esp+1Ch]
16809
                and     edi, [esp+8]
16810
                xor     ecx, ebx
16811
                lea     ebp, [eax+ebp+78AF2FDAh]
16812
                xor     ecx, edi
16813
                ror     ecx, 7
16814
                add     ebp, ecx
16815
                mov     eax, [esp+8]
16816
                mov     [esp+0Ch], ebp
16817
                mov     ebp, [esp]
16818
                mov     ebx, [esp+0Ch]
16819
                mov     ecx, [esp+14h]
16820
                mov     edi, ebx
16821
                and     ebx, [esp+1Ch]
16822
                and     edi, ecx
16823
                xor     ebx, ebp
16824
                ror     eax, 0Bh
16825
                xor     edi, ebp
16826
                mov     ebp, [esi+78h]
16827
                xor     edi, [esp+10h]
16828
                and     ecx, [esp+18h]
16829
                and     edi, [esp+4]
16830
                xor     ecx, ebx
16831
                lea     ebp, [eax+ebp+55605C60h]
16832
                xor     ecx, edi
16833
                ror     ecx, 7
16834
                add     ebp, ecx
16835
                mov     eax, [esp+4]
16836
                mov     [esp+8], ebp
16837
                mov     ebp, [esp+1Ch]
16838
                mov     ebx, [esp+8]
16839
                mov     ecx, [esp+10h]
16840
                mov     edi, ebx
16841
                and     ebx, [esp+18h]
16842
                and     edi, ecx
16843
                xor     ebx, ebp
16844
                ror     eax, 0Bh
16845
                xor     edi, ebp
16846
                mov     ebp, [esi+40h]
16847
                xor     edi, [esp+0Ch]
16848
                and     ecx, [esp+14h]
16849
                and     edi, [esp]
16850
                xor     ecx, ebx
16851
                lea     ebp, [eax+ebp-19AADA0Dh]
16852
                xor     ecx, edi
16853
                ror     ecx, 7
16854
                add     ebp, ecx
16855
                mov     eax, [esp]
16856
                mov     [esp+4], ebp
16857
                mov     ebp, [esp+18h]
16858
                mov     ebx, [esp+4]
16859
                mov     ecx, [esp+0Ch]
16860
                mov     edi, ebx
16861
                and     ebx, [esp+14h]
16862
                and     edi, ecx
16863
                xor     ebx, ebp
16864
                ror     eax, 0Bh
16865
                xor     edi, ebp
16866
                mov     ebp, [esi+68h]
16867
                xor     edi, [esp+8]
16868
                and     ecx, [esp+10h]
16869
                and     edi, [esp+1Ch]
16870
                xor     ecx, ebx
16871
                lea     ebp, [eax+ebp-55AA546Ch]
16872
                xor     ecx, edi
16873
                ror     ecx, 7
16874
                add     ebp, ecx
16875
                mov     eax, [esp+1Ch]
16876
                mov     [esp], ebp
16877
                mov     ebp, [esp+14h]
16878
                mov     ebx, [esp]
16879
                mov     ecx, [esp+8]
16880
                mov     edi, ebx
16881
                and     ebx, [esp+10h]
16882
                and     edi, ecx
16883
                xor     ebx, ebp
16884
                ror     eax, 0Bh
16885
                xor     edi, ebp
16886
                mov     ebp, [esi+7Ch]
16887
                xor     edi, [esp+4]
16888
                and     ecx, [esp+0Ch]
16889
                and     edi, [esp+18h]
16890
                xor     ecx, ebx
16891
                lea     ebp, [eax+ebp+57489862h]
16892
                xor     ecx, edi
16893
                ror     ecx, 7
16894
                add     ebp, ecx
16895
                mov     eax, [esp+18h]
16896
                mov     [esp+1Ch], ebp
16897
                mov     ebp, [esp+10h]
16898
                mov     ebx, [esp+1Ch]
16899
                mov     ecx, [esp+4]
16900
                mov     edi, ebx
16901
                and     ebx, [esp+0Ch]
16902
                and     edi, ecx
16903
                xor     ebx, ebp
16904
                ror     eax, 0Bh
16905
                xor     edi, ebp
16906
                mov     ebp, [esi+3Ch]
16907
                xor     edi, [esp]
16908
                and     ecx, [esp+8]
16909
                and     edi, [esp+14h]
16910
                xor     ecx, ebx
16911
                lea     ebp, [eax+ebp+63E81440h]
16912
                xor     ecx, edi
16913
                ror     ecx, 7
16914
                add     ebp, ecx
16915
                mov     eax, [esp+14h]
16916
                mov     [esp+18h], ebp
16917
                mov     ebp, [esp+0Ch]
16918
                mov     ebx, [esp+18h]
16919
                mov     ecx, [esp]
16920
                mov     edi, ebx
16921
                and     ebx, [esp+8]
16922
                and     edi, ecx
16923
                xor     ebx, ebp
16924
                ror     eax, 0Bh
16925
                xor     edi, ebp
16926
                mov     ebp, [esi+1Ch]
16927
                xor     edi, [esp+1Ch]
16928
                and     ecx, [esp+4]
16929
                and     edi, [esp+10h]
16930
                xor     ecx, ebx
16931
                lea     ebp, [eax+ebp+55CA396Ah]
16932
                xor     ecx, edi
16933
                ror     ecx, 7
16934
                add     ebp, ecx
16935
                mov     eax, [esp+10h]
16936
                mov     [esp+14h], ebp
16937
                mov     ebp, [esp+8]
16938
                mov     ebx, [esp+14h]
16939
                mov     ecx, [esp+1Ch]
16940
                mov     edi, ebx
16941
                and     ebx, [esp+4]
16942
                and     edi, ecx
16943
                xor     ebx, ebp
16944
                ror     eax, 0Bh
16945
                xor     edi, ebp
16946
                mov     ebp, [esi+0Ch]
16947
                xor     edi, [esp+18h]
16948
                and     ecx, [esp]
16949
                and     edi, [esp+0Ch]
16950
                xor     ecx, ebx
16951
                lea     ebp, [eax+ebp+2AAB10B6h]
16952
                xor     ecx, edi
16953
                ror     ecx, 7
16954
                add     ebp, ecx
16955
                mov     eax, [esp+0Ch]
16956
                mov     [esp+10h], ebp
16957
                mov     ebp, [esp+4]
16958
                mov     ebx, [esp+10h]
16959
                mov     ecx, [esp+18h]
16960
                mov     edi, ebx
16961
                and     ebx, [esp]
16962
                and     edi, ecx
16963
                xor     ebx, ebp
16964
                ror     eax, 0Bh
16965
                xor     edi, ebp
16966
                mov     ebp, [esi+4]
16967
                xor     edi, [esp+14h]
16968
                and     ecx, [esp+1Ch]
16969
                and     edi, [esp+8]
16970
                xor     ecx, ebx
16971
                lea     ebp, [eax+ebp-4B33A3CCh]
16972
                xor     ecx, edi
16973
                ror     ecx, 7
16974
                add     ebp, ecx
16975
                mov     eax, [esp+8]
16976
                mov     [esp+0Ch], ebp
16977
                mov     ebp, [esp]
16978
                mov     ebx, [esp+0Ch]
16979
                mov     ecx, [esp+14h]
16980
                mov     edi, ebx
16981
                and     ebx, [esp+1Ch]
16982
                and     edi, ecx
16983
                xor     ebx, ebp
16984
                ror     eax, 0Bh
16985
                xor     edi, ebp
16986
                mov     ebp, [esi]
16987
                xor     edi, [esp+10h]
16988
                and     ecx, [esp+18h]
16989
                and     edi, [esp+4]
16990
                xor     ecx, ebx
16991
                lea     ebp, [eax+ebp+1141E8CEh]
16992
                xor     ecx, edi
16993
                ror     ecx, 7
16994
                add     ebp, ecx
16995
                mov     eax, [esp+4]
16996
                mov     [esp+8], ebp
16997
                mov     ebp, [esp+1Ch]
16998
                mov     ebx, [esp+8]
16999
                mov     ecx, [esp+10h]
17000
                mov     edi, ebx
17001
                and     ebx, [esp+18h]
17002
                and     edi, ecx
17003
                xor     ebx, ebp
17004
                ror     eax, 0Bh
17005
                xor     edi, ebp
17006
                mov     ebp, [esi+48h]
17007
                xor     edi, [esp+0Ch]
17008
                and     ecx, [esp+14h]
17009
                and     edi, [esp]
17010
                xor     ecx, ebx
17011
                lea     ebp, [eax+ebp-5EAB7951h]
17012
                xor     ecx, edi
17013
                ror     ecx, 7
17014
                add     ebp, ecx
17015
                mov     eax, [esp]
17016
                mov     [esp+4], ebp
17017
                mov     ebp, [esp+18h]
17018
                mov     ebx, [esp+4]
17019
                mov     ecx, [esp+0Ch]
17020
                mov     edi, ebx
17021
                and     ebx, [esp+14h]
17022
                and     edi, ecx
17023
                xor     ebx, ebp
17024
                ror     eax, 0Bh
17025
                xor     edi, ebp
17026
                mov     ebp, [esi+6Ch]
17027
                xor     edi, [esp+8]
17028
                and     ecx, [esp+10h]
17029
                and     edi, [esp+1Ch]
17030
                xor     ecx, ebx
17031
                lea     ebp, [eax+ebp+7C72E993h]
17032
                xor     ecx, edi
17033
                ror     ecx, 7
17034
                add     ebp, ecx
17035
                mov     eax, [esp+1Ch]
17036
                mov     [esp], ebp
17037
                mov     ebp, [esp+14h]
17038
                mov     ebx, [esp]
17039
                mov     ecx, [esp+8]
17040
                mov     edi, ebx
17041
                and     ebx, [esp+10h]
17042
                and     edi, ecx
17043
                xor     ebx, ebp
17044
                ror     eax, 0Bh
17045
                xor     edi, ebp
17046
                mov     ebp, [esi+34h]
17047
                xor     edi, [esp+4]
17048
                and     ecx, [esp+0Ch]
17049
                and     edi, [esp+18h]
17050
                xor     ecx, ebx
17051
                lea     ebp, [eax+ebp-4C11EBEFh]
17052
                xor     ecx, edi
17053
                ror     ecx, 7
17054
                add     ebp, ecx
17055
                mov     eax, [esp+18h]
17056
                mov     [esp+1Ch], ebp
17057
                mov     ebp, [esp+10h]
17058
                mov     ebx, [esp+1Ch]
17059
                mov     ecx, [esp+4]
17060
                mov     edi, ebx
17061
                and     ebx, [esp+0Ch]
17062
                and     edi, ecx
17063
                xor     ebx, ebp
17064
                ror     eax, 0Bh
17065
                xor     edi, ebp
17066
                mov     ebp, [esi+18h]
17067
                xor     edi, [esp]
17068
                and     ecx, [esp+8]
17069
                and     edi, [esp+14h]
17070
                xor     ecx, ebx
17071
                lea     ebp, [eax+ebp+636FBC2Ah]
17072
                xor     ecx, edi
17073
                ror     ecx, 7
17074
                add     ebp, ecx
17075
                mov     eax, [esp+14h]
17076
                mov     [esp+18h], ebp
17077
                mov     ebp, [esp+0Ch]
17078
                mov     ebx, [esp+18h]
17079
                mov     ecx, [esp]
17080
                mov     edi, ebx
17081
                and     ebx, [esp+8]
17082
                and     edi, ecx
17083
                xor     ebx, ebp
17084
                ror     eax, 0Bh
17085
                xor     edi, ebp
17086
                mov     ebp, [esi+54h]
17087
                xor     edi, [esp+1Ch]
17088
                and     ecx, [esp+4]
17089
                and     edi, [esp+10h]
17090
                xor     ecx, ebx
17091
                lea     ebp, [eax+ebp+2BA9C55Dh]
17092
                xor     ecx, edi
17093
                ror     ecx, 7
17094
                add     ebp, ecx
17095
                mov     eax, [esp+10h]
17096
                mov     [esp+14h], ebp
17097
                mov     ebp, [esp+8]
17098
                mov     ebx, [esp+14h]
17099
                mov     ecx, [esp+1Ch]
17100
                mov     edi, ebx
17101
                and     ebx, [esp+4]
17102
                and     edi, ecx
17103
                xor     ebx, ebp
17104
                ror     eax, 0Bh
17105
                xor     edi, ebp
17106
                mov     ebp, [esi+28h]
17107
                xor     edi, [esp+18h]
17108
                and     ecx, [esp]
17109
                and     edi, [esp+0Ch]
17110
                xor     ecx, ebx
17111
                lea     ebp, [eax+ebp+741831F6h]
17112
                xor     ecx, edi
17113
                ror     ecx, 7
17114
                add     ebp, ecx
17115
                mov     eax, [esp+0Ch]
17116
                mov     [esp+10h], ebp
17117
                mov     ebp, [esp+4]
17118
                mov     ebx, [esp+10h]
17119
                mov     ecx, [esp+18h]
17120
                mov     edi, ebx
17121
                and     ebx, [esp]
17122
                and     edi, ecx
17123
                xor     ebx, ebp
17124
                ror     eax, 0Bh
17125
                xor     edi, ebp
17126
                mov     ebp, [esi+5Ch]
17127
                xor     edi, [esp+14h]
17128
                and     ecx, [esp+1Ch]
17129
                and     edi, [esp+8]
17130
                xor     ecx, ebx
17131
                lea     ebp, [eax+ebp-31A3C1EAh]
17132
                xor     ecx, edi
17133
                ror     ecx, 7
17134
                add     ebp, ecx
17135
                mov     eax, [esp+8]
17136
                mov     [esp+0Ch], ebp
17137
                mov     ebp, [esp]
17138
                mov     ebx, [esp+0Ch]
17139
                mov     ecx, [esp+14h]
17140
                mov     edi, ebx
17141
                and     ebx, [esp+1Ch]
17142
                and     edi, ecx
17143
                xor     ebx, ebp
17144
                ror     eax, 0Bh
17145
                xor     edi, ebp
17146
                mov     ebp, [esi+2Ch]
17147
                xor     edi, [esp+10h]
17148
                and     ecx, [esp+18h]
17149
                and     edi, [esp+4]
17150
                xor     ecx, ebx
17151
                lea     ebp, [eax+ebp-64786CE2h]
17152
                xor     ecx, edi
17153
                ror     ecx, 7
17154
                add     ebp, ecx
17155
                mov     eax, [esp+4]
17156
                mov     [esp+8], ebp
17157
                mov     ebp, [esp+1Ch]
17158
                mov     ebx, [esp+8]
17159
                mov     ecx, [esp+10h]
17160
                mov     edi, ebx
17161
                and     ebx, [esp+18h]
17162
                and     edi, ecx
17163
                xor     ebx, ebp
17164
                ror     eax, 0Bh
17165
                xor     edi, ebp
17166
                mov     ebp, [esi+14h]
17167
                xor     edi, [esp+0Ch]
17168
                and     ecx, [esp+14h]
17169
                and     edi, [esp]
17170
                xor     ecx, ebx
17171
                lea     ebp, [eax+ebp-502945CDh]
17172
                xor     ecx, edi
17173
                ror     ecx, 7
17174
                add     ebp, ecx
17175
                mov     eax, [esp]
17176
                mov     [esp+4], ebp
17177
                mov     ebp, [esp+18h]
17178
                mov     ebx, [esp+4]
17179
                mov     ecx, [esp+0Ch]
17180
                mov     edi, ebx
17181
                and     ebx, [esp+14h]
17182
                and     edi, ecx
17183
                xor     ebx, ebp
17184
                ror     eax, 0Bh
17185
                xor     edi, ebp
17186
                mov     ebp, [esi+8]
17187
                xor     edi, [esp+8]
17188
                and     ecx, [esp+10h]
17189
                and     edi, [esp+1Ch]
17190
                xor     ecx, ebx
17191
                lea     ebp, [eax+ebp+6C24CF5Ch]
17192
                xor     ecx, edi
17193
                ror     ecx, 7
17194
                add     ebp, ecx
17195
                mov     eax, [esp+1Ch]
17196
                mov     [esp], ebp
17197
                mov     ebp, [esp+8]
17198
                mov     ecx, [esp+10h]
17199
                mov     edx, [esp+18h]
17200
                mov     edi, ebp
17201
                mov     ebx, edx
17202
                xor     ebp, 0FFFFFFFFh
17203
                xor     ebx, 0FFFFFFFFh
17204
                and     ebp, ecx
17205
                and     ebx, [esp+14h]
17206
                xor     ebp, [esp+4]
17207
                xor     ebx, edx
17208
                xor     ebp, [esp+0Ch]
17209
                xor     ebx, ebp
17210
                mov     ebp, edi
17211
                and     ebx, [esp]
17212
                and     ebp, [esp+4]
17213
                and     edi, edx
17214
                xor     ebp, ecx
17215
                xor     ebx, [esp+0Ch]
17216
                ror     eax, 0Bh
17217
                xor     ebp, edx
17218
                mov     edx, [esi+60h]
17219
                and     ebp, [esp+14h]
17220
                xor     ebx, edi
17221
                xor     ebp, ebx
17222
                lea     edx, [eax+edx+7A325381h]
17223
                ror     ebp, 7
17224
                add     ebp, edx
17225
                mov     eax, [esp+18h]
17226
                mov     [esp+1Ch], ebp
17227
                mov     ebp, [esp+4]
17228
                mov     ecx, [esp+0Ch]
17229
                mov     edx, [esp+14h]
17230
                mov     edi, ebp
17231
                mov     ebx, edx
17232
                xor     ebp, 0FFFFFFFFh
17233
                xor     ebx, 0FFFFFFFFh
17234
                and     ebp, ecx
17235
                and     ebx, [esp+10h]
17236
                xor     ebp, [esp]
17237
                xor     ebx, edx
17238
                xor     ebp, [esp+8]
17239
                xor     ebx, ebp
17240
                mov     ebp, edi
17241
                and     ebx, [esp+1Ch]
17242
                and     ebp, [esp]
17243
                and     edi, edx
17244
                xor     ebp, ecx
17245
                xor     ebx, [esp+8]
17246
                ror     eax, 0Bh
17247
                xor     ebp, edx
17248
                mov     edx, [esi+10h]
17249
                and     ebp, [esp+10h]
17250
                xor     ebx, edi
17251
                xor     ebp, ebx
17252
                lea     edx, [eax+edx+28958677h]
17253
                ror     ebp, 7
17254
                add     ebp, edx
17255
                mov     eax, [esp+14h]
17256
                mov     [esp+18h], ebp
17257
                mov     ebp, [esp]
17258
                mov     ecx, [esp+8]
17259
                mov     edx, [esp+10h]
17260
                mov     edi, ebp
17261
                mov     ebx, edx
17262
                xor     ebp, 0FFFFFFFFh
17263
                xor     ebx, 0FFFFFFFFh
17264
                and     ebp, ecx
17265
                and     ebx, [esp+0Ch]
17266
                xor     ebp, [esp+1Ch]
17267
                xor     ebx, edx
17268
                xor     ebp, [esp+4]
17269
                xor     ebx, ebp
17270
                mov     ebp, edi
17271
                and     ebx, [esp+18h]
17272
                and     ebp, [esp+1Ch]
17273
                and     edi, edx
17274
                xor     ebp, ecx
17275
                xor     ebx, [esp+4]
17276
                ror     eax, 0Bh
17277
                xor     ebp, edx
17278
                mov     edx, [esi]
17279
                and     ebp, [esp+0Ch]
17280
                xor     ebx, edi
17281
                xor     ebp, ebx
17282
                lea     edx, [eax+edx+3B8F4898h]
17283
                ror     ebp, 7
17284
                add     ebp, edx
17285
                mov     eax, [esp+10h]
17286
                mov     [esp+14h], ebp
17287
                mov     ebp, [esp+1Ch]
17288
                mov     ecx, [esp+4]
17289
                mov     edx, [esp+0Ch]
17290
                mov     edi, ebp
17291
                mov     ebx, edx
17292
                xor     ebp, 0FFFFFFFFh
17293
                xor     ebx, 0FFFFFFFFh
17294
                and     ebp, ecx
17295
                and     ebx, [esp+8]
17296
                xor     ebp, [esp+18h]
17297
                xor     ebx, edx
17298
                xor     ebp, [esp]
17299
                xor     ebx, ebp
17300
                mov     ebp, edi
17301
                and     ebx, [esp+14h]
17302
                and     ebp, [esp+18h]
17303
                and     edi, edx
17304
                xor     ebp, ecx
17305
                xor     ebx, [esp]
17306
                ror     eax, 0Bh
17307
                xor     ebp, edx
17308
                mov     edx, [esi+38h]
17309
                and     ebp, [esp+8]
17310
                xor     ebx, edi
17311
                xor     ebp, ebx
17312
                lea     edx, [eax+edx+6B4BB9AFh]
17313
                ror     ebp, 7
17314
                add     ebp, edx
17315
                mov     eax, [esp+0Ch]
17316
                mov     [esp+10h], ebp
17317
                mov     ebp, [esp+18h]
17318
                mov     ecx, [esp]
17319
                mov     edx, [esp+8]
17320
                mov     edi, ebp
17321
                mov     ebx, edx
17322
                xor     ebp, 0FFFFFFFFh
17323
                xor     ebx, 0FFFFFFFFh
17324
                and     ebp, ecx
17325
                and     ebx, [esp+4]
17326
                xor     ebp, [esp+14h]
17327
                xor     ebx, edx
17328
                xor     ebp, [esp+1Ch]
17329
                xor     ebx, ebp
17330
                mov     ebp, edi
17331
                and     ebx, [esp+10h]
17332
                and     ebp, [esp+14h]
17333
                and     edi, edx
17334
                xor     ebp, ecx
17335
                xor     ebx, [esp+1Ch]
17336
                ror     eax, 0Bh
17337
                xor     ebp, edx
17338
                mov     edx, [esi+8]
17339
                and     ebp, [esp+4]
17340
                xor     ebx, edi
17341
                xor     ebp, ebx
17342
                lea     edx, [eax+edx-3B4017E5h]
17343
                ror     ebp, 7
17344
                add     ebp, edx
17345
                mov     eax, [esp+8]
17346
                mov     [esp+0Ch], ebp
17347
                mov     ebp, [esp+14h]
17348
                mov     ecx, [esp+1Ch]
17349
                mov     edx, [esp+4]
17350
                mov     edi, ebp
17351
                mov     ebx, edx
17352
                xor     ebp, 0FFFFFFFFh
17353
                xor     ebx, 0FFFFFFFFh
17354
                and     ebp, ecx
17355
                and     ebx, [esp]
17356
                xor     ebp, [esp+10h]
17357
                xor     ebx, edx
17358
                xor     ebp, [esp+18h]
17359
                xor     ebx, ebp
17360
                mov     ebp, edi
17361
                and     ebx, [esp+0Ch]
17362
                and     ebp, [esp+10h]
17363
                and     edi, edx
17364
                xor     ebp, ecx
17365
                xor     ebx, [esp+18h]
17366
                ror     eax, 0Bh
17367
                xor     ebp, edx
17368
                mov     edx, [esi+1Ch]
17369
                and     ebp, [esp]
17370
                xor     ebx, edi
17371
                xor     ebp, ebx
17372
                lea     edx, [eax+edx+66282193h]
17373
                ror     ebp, 7
17374
                add     ebp, edx
17375
                mov     eax, [esp+4]
17376
                mov     [esp+8], ebp
17377
                mov     ebp, [esp+10h]
17378
                mov     ecx, [esp+18h]
17379
                mov     edx, [esp]
17380
                mov     edi, ebp
17381
                mov     ebx, edx
17382
                xor     ebp, 0FFFFFFFFh
17383
                xor     ebx, 0FFFFFFFFh
17384
                and     ebp, ecx
17385
                and     ebx, [esp+1Ch]
17386
                xor     ebp, [esp+0Ch]
17387
                xor     ebx, edx
17388
                xor     ebp, [esp+14h]
17389
                xor     ebx, ebp
17390
                mov     ebp, edi
17391
                and     ebx, [esp+8]
17392
                and     ebp, [esp+0Ch]
17393
                and     edi, edx
17394
                xor     ebp, ecx
17395
                xor     ebx, [esp+14h]
17396
                ror     eax, 0Bh
17397
                xor     ebp, edx
17398
                mov     edx, [esi+70h]
17399
                and     ebp, [esp+1Ch]
17400
                xor     ebx, edi
17401
                xor     ebp, ebx
17402
                lea     edx, [eax+edx+61D809CCh]
17403
                ror     ebp, 7
17404
                add     ebp, edx
17405
                mov     eax, [esp]
17406
                mov     [esp+4], ebp
17407
                mov     ebp, [esp+0Ch]
17408
                mov     ecx, [esp+14h]
17409
                mov     edx, [esp+1Ch]
17410
                mov     edi, ebp
17411
                mov     ebx, edx
17412
                xor     ebp, 0FFFFFFFFh
17413
                xor     ebx, 0FFFFFFFFh
17414
                and     ebp, ecx
17415
                and     ebx, [esp+18h]
17416
                xor     ebp, [esp+8]
17417
                xor     ebx, edx
17418
                xor     ebp, [esp+10h]
17419
                xor     ebx, ebp
17420
                mov     ebp, edi
17421
                and     ebx, [esp+4]
17422
                and     ebp, [esp+8]
17423
                and     edi, edx
17424
                xor     ebp, ecx
17425
                xor     ebx, [esp+10h]
17426
                ror     eax, 0Bh
17427
                xor     ebp, edx
17428
                mov     edx, [esi+5Ch]
17429
                and     ebp, [esp+18h]
17430
                xor     ebx, edi
17431
                xor     ebp, ebx
17432
                lea     edx, [eax+edx-4DE566Fh]
17433
                ror     ebp, 7
17434
                add     ebp, edx
17435
                mov     eax, [esp+1Ch]
17436
                mov     [esp], ebp
17437
                mov     ebp, [esp+8]
17438
                mov     ecx, [esp+10h]
17439
                mov     edx, [esp+18h]
17440
                mov     edi, ebp
17441
                mov     ebx, edx
17442
                xor     ebp, 0FFFFFFFFh
17443
                xor     ebx, 0FFFFFFFFh
17444
                and     ebp, ecx
17445
                and     ebx, [esp+14h]
17446
                xor     ebp, [esp+4]
17447
                xor     ebx, edx
17448
                xor     ebp, [esp+0Ch]
17449
                xor     ebx, ebp
17450
                mov     ebp, edi
17451
                and     ebx, [esp]
17452
                and     ebp, [esp+4]
17453
                and     edi, edx
17454
                xor     ebp, ecx
17455
                xor     ebx, [esp+0Ch]
17456
                ror     eax, 0Bh
17457
                xor     ebp, edx
17458
                mov     edx, [esi+68h]
17459
                and     ebp, [esp+14h]
17460
                xor     ebx, edi
17461
                xor     ebp, ebx
17462
                lea     edx, [eax+edx+487CAC60h]
17463
                ror     ebp, 7
17464
                add     ebp, edx
17465
                mov     eax, [esp+18h]
17466
                mov     [esp+1Ch], ebp
17467
                mov     ebp, [esp+4]
17468
                mov     ecx, [esp+0Ch]
17469
                mov     edx, [esp+14h]
17470
                mov     edi, ebp
17471
                mov     ebx, edx
17472
                xor     ebp, 0FFFFFFFFh
17473
                xor     ebx, 0FFFFFFFFh
17474
                and     ebp, ecx
17475
                and     ebx, [esp+10h]
17476
                xor     ebp, [esp]
17477
                xor     ebx, edx
17478
                xor     ebp, [esp+8]
17479
                xor     ebx, ebp
17480
                mov     ebp, edi
17481
                and     ebx, [esp+1Ch]
17482
                and     ebp, [esp]
17483
                and     edi, edx
17484
                xor     ebp, ecx
17485
                xor     ebx, [esp+8]
17486
                ror     eax, 0Bh
17487
                xor     ebp, edx
17488
                mov     edx, [esi+18h]
17489
                and     ebp, [esp+10h]
17490
                xor     ebx, edi
17491
                xor     ebp, ebx
17492
                lea     edx, [eax+edx+5DEC8032h]
17493
                ror     ebp, 7
17494
                add     ebp, edx
17495
                mov     eax, [esp+14h]
17496
                mov     [esp+18h], ebp
17497
                mov     ebp, [esp]
17498
                mov     ecx, [esp+8]
17499
                mov     edx, [esp+10h]
17500
                mov     edi, ebp
17501
                mov     ebx, edx
17502
                xor     ebp, 0FFFFFFFFh
17503
                xor     ebx, 0FFFFFFFFh
17504
                and     ebp, ecx
17505
                and     ebx, [esp+0Ch]
17506
                xor     ebp, [esp+1Ch]
17507
                xor     ebx, edx
17508
                xor     ebp, [esp+4]
17509
                xor     ebx, ebp
17510
                mov     ebp, edi
17511
                and     ebx, [esp+18h]
17512
                and     ebp, [esp+1Ch]
17513
                and     edi, edx
17514
                xor     ebp, ecx
17515
                xor     ebx, [esp+4]
17516
                ror     eax, 0Bh
17517
                xor     ebp, edx
17518
                mov     edx, [esi+78h]
17519
                and     ebp, [esp+0Ch]
17520
                xor     ebx, edi
17521
                xor     ebp, ebx
17522
                lea     edx, [eax+edx-107BA2A3h]
17523
                ror     ebp, 7
17524
                add     ebp, edx
17525
                mov     eax, [esp+10h]
17526
                mov     [esp+14h], ebp
17527
                mov     ebp, [esp+1Ch]
17528
                mov     ecx, [esp+4]
17529
                mov     edx, [esp+0Ch]
17530
                mov     edi, ebp
17531
                mov     ebx, edx
17532
                xor     ebp, 0FFFFFFFFh
17533
                xor     ebx, 0FFFFFFFFh
17534
                and     ebp, ecx
17535
                and     ebx, [esp+8]
17536
                xor     ebp, [esp+18h]
17537
                xor     ebx, edx
17538
                xor     ebp, [esp]
17539
                xor     ebx, ebp
17540
                mov     ebp, edi
17541
                and     ebx, [esp+14h]
17542
                and     ebp, [esp+18h]
17543
                and     edi, edx
17544
                xor     ebp, ecx
17545
                xor     ebx, [esp]
17546
                ror     eax, 0Bh
17547
                xor     ebp, edx
17548
                mov     edx, [esi+50h]
17549
                and     ebp, [esp+8]
17550
                xor     ebx, edi
17551
                xor     ebp, ebx
17552
                lea     edx, [eax+edx-167A8A4Fh]
17553
                ror     ebp, 7
17554
                add     ebp, edx
17555
                mov     eax, [esp+0Ch]
17556
                mov     [esp+10h], ebp
17557
                mov     ebp, [esp+18h]
17558
                mov     ecx, [esp]
17559
                mov     edx, [esp+8]
17560
                mov     edi, ebp
17561
                mov     ebx, edx
17562
                xor     ebp, 0FFFFFFFFh
17563
                xor     ebx, 0FFFFFFFFh
17564
                and     ebp, ecx
17565
                and     ebx, [esp+4]
17566
                xor     ebp, [esp+14h]
17567
                xor     ebx, edx
17568
                xor     ebp, [esp+1Ch]
17569
                xor     ebx, ebp
17570
                mov     ebp, edi
17571
                and     ebx, [esp+10h]
17572
                and     ebp, [esp+14h]
17573
                and     edi, edx
17574
                xor     ebp, ecx
17575
                xor     ebx, [esp+1Ch]
17576
                ror     eax, 0Bh
17577
                xor     ebp, edx
17578
                mov     edx, [esi+48h]
17579
                and     ebp, [esp+4]
17580
                xor     ebx, edi
17581
                xor     ebp, ebx
17582
                lea     edx, [eax+edx-23D9DCFEh]
17583
                ror     ebp, 7
17584
                add     ebp, edx
17585
                mov     eax, [esp+8]
17586
                mov     [esp+0Ch], ebp
17587
                mov     ebp, [esp+14h]
17588
                mov     ecx, [esp+1Ch]
17589
                mov     edx, [esp+4]
17590
                mov     edi, ebp
17591
                mov     ebx, edx
17592
                xor     ebp, 0FFFFFFFFh
17593
                xor     ebx, 0FFFFFFFFh
17594
                and     ebp, ecx
17595
                and     ebx, [esp]
17596
                xor     ebp, [esp+10h]
17597
                xor     ebx, edx
17598
                xor     ebp, [esp+18h]
17599
                xor     ebx, ebp
17600
                mov     ebp, edi
17601
                and     ebx, [esp+0Ch]
17602
                and     ebp, [esp+10h]
17603
                and     edi, edx
17604
                xor     ebp, ecx
17605
                xor     ebx, [esp+18h]
17606
                ror     eax, 0Bh
17607
                xor     ebp, edx
17608
                mov     edx, [esi+64h]
17609
                and     ebp, [esp]
17610
                xor     ebx, edi
17611
                xor     ebp, ebx
17612
                lea     edx, [eax+edx-149AE478h]
17613
                ror     ebp, 7
17614
                add     ebp, edx
17615
                mov     eax, [esp+4]
17616
                mov     [esp+8], ebp
17617
                mov     ebp, [esp+10h]
17618
                mov     ecx, [esp+18h]
17619
                mov     edx, [esp]
17620
                mov     edi, ebp
17621
                mov     ebx, edx
17622
                xor     ebp, 0FFFFFFFFh
17623
                xor     ebx, 0FFFFFFFFh
17624
                and     ebp, ecx
17625
                and     ebx, [esp+1Ch]
17626
                xor     ebp, [esp+0Ch]
17627
                xor     ebx, edx
17628
                xor     ebp, [esp+14h]
17629
                xor     ebx, ebp
17630
                mov     ebp, edi
17631
                and     ebx, [esp+8]
17632
                and     ebp, [esp+0Ch]
17633
                and     edi, edx
17634
                xor     ebp, ecx
17635
                xor     ebx, [esp+14h]
17636
                ror     eax, 0Bh
17637
                xor     ebp, edx
17638
                mov     edx, [esi+4Ch]
17639
                and     ebp, [esp+1Ch]
17640
                xor     ebx, edi
17641
                xor     ebp, ebx
17642
                lea     edx, [eax+edx+23893E81h]
17643
                ror     ebp, 7
17644
                add     ebp, edx
17645
                mov     eax, [esp]
17646
                mov     [esp+4], ebp
17647
                mov     ebp, [esp+0Ch]
17648
                mov     ecx, [esp+14h]
17649
                mov     edx, [esp+1Ch]
17650
                mov     edi, ebp
17651
                mov     ebx, edx
17652
                xor     ebp, 0FFFFFFFFh
17653
                xor     ebx, 0FFFFFFFFh
17654
                and     ebp, ecx
17655
                and     ebx, [esp+18h]
17656
                xor     ebp, [esp+8]
17657
                xor     ebx, edx
17658
                xor     ebp, [esp+10h]
17659
                xor     ebx, ebp
17660
                mov     ebp, edi
17661
                and     ebx, [esp+4]
17662
                and     ebp, [esp+8]
17663
                and     edi, edx
17664
                xor     ebp, ecx
17665
                xor     ebx, [esp+10h]
17666
                ror     eax, 0Bh
17667
                xor     ebp, edx
17668
                mov     edx, [esi+0Ch]
17669
                and     ebp, [esp+18h]
17670
                xor     ebx, edi
17671
                xor     ebp, ebx
17672
                lea     edx, [eax+edx-2C69533Bh]
17673
                ror     ebp, 7
17674
                add     ebp, edx
17675
                mov     eax, [esp+1Ch]
17676
                mov     [esp], ebp
17677
                mov     ebp, [esp+8]
17678
                mov     ecx, [esp+10h]
17679
                mov     edx, [esp+18h]
17680
                mov     edi, ebp
17681
                mov     ebx, edx
17682
                xor     ebp, 0FFFFFFFFh
17683
                xor     ebx, 0FFFFFFFFh
17684
                and     ebp, ecx
17685
                and     ebx, [esp+14h]
17686
                xor     ebp, [esp+4]
17687
                xor     ebx, edx
17688
                xor     ebp, [esp+0Ch]
17689
                xor     ebx, ebp
17690
                mov     ebp, edi
17691
                and     ebx, [esp]
17692
                and     ebp, [esp+4]
17693
                and     edi, edx
17694
                xor     ebp, ecx
17695
                xor     ebx, [esp+0Ch]
17696
                ror     eax, 0Bh
17697
                xor     ebp, edx
17698
                mov     edx, [esi+58h]
17699
                and     ebp, [esp+14h]
17700
                xor     ebx, edi
17701
                xor     ebp, ebx
17702
                lea     edx, [eax+edx+0F6D6FF3h]
17703
                ror     ebp, 7
17704
                add     ebp, edx
17705
                mov     eax, [esp+18h]
17706
                mov     [esp+1Ch], ebp
17707
                mov     ebp, [esp+4]
17708
                mov     ecx, [esp+0Ch]
17709
                mov     edx, [esp+14h]
17710
                mov     edi, ebp
17711
                mov     ebx, edx
17712
                xor     ebp, 0FFFFFFFFh
17713
                xor     ebx, 0FFFFFFFFh
17714
                and     ebp, ecx
17715
                and     ebx, [esp+10h]
17716
                xor     ebp, [esp]
17717
                xor     ebx, edx
17718
                xor     ebp, [esp+8]
17719
                xor     ebx, ebp
17720
                mov     ebp, edi
17721
                and     ebx, [esp+1Ch]
17722
                and     ebp, [esp]
17723
                and     edi, edx
17724
                xor     ebp, ecx
17725
                xor     ebx, [esp+8]
17726
                ror     eax, 0Bh
17727
                xor     ebp, edx
17728
                mov     edx, [esi+2Ch]
17729
                and     ebp, [esp+10h]
17730
                xor     ebx, edi
17731
                xor     ebp, ebx
17732
                lea     edx, [eax+edx-7C0BBDC7h]
17733
                ror     ebp, 7
17734
                add     ebp, edx
17735
                mov     eax, [esp+14h]
17736
                mov     [esp+18h], ebp
17737
                mov     ebp, [esp]
17738
                mov     ecx, [esp+8]
17739
                mov     edx, [esp+10h]
17740
                mov     edi, ebp
17741
                mov     ebx, edx
17742
                xor     ebp, 0FFFFFFFFh
17743
                xor     ebx, 0FFFFFFFFh
17744
                and     ebp, ecx
17745
                and     ebx, [esp+0Ch]
17746
                xor     ebp, [esp+1Ch]
17747
                xor     ebx, edx
17748
                xor     ebp, [esp+4]
17749
                xor     ebx, ebp
17750
                mov     ebp, edi
17751
                and     ebx, [esp+18h]
17752
                and     ebp, [esp+1Ch]
17753
                and     edi, edx
17754
                xor     ebp, ecx
17755
                xor     ebx, [esp+4]
17756
                ror     eax, 0Bh
17757
                xor     ebp, edx
17758
                mov     edx, [esi+7Ch]
17759
                and     ebp, [esp+0Ch]
17760
                xor     ebx, edi
17761
                xor     ebp, ebx
17762
                lea     edx, [eax+edx+2E0B4482h]
17763
                ror     ebp, 7
17764
                add     ebp, edx
17765
                mov     eax, [esp+10h]
17766
                mov     [esp+14h], ebp
17767
                mov     ebp, [esp+1Ch]
17768
                mov     ecx, [esp+4]
17769
                mov     edx, [esp+0Ch]
17770
                mov     edi, ebp
17771
                mov     ebx, edx
17772
                xor     ebp, 0FFFFFFFFh
17773
                xor     ebx, 0FFFFFFFFh
17774
                and     ebp, ecx
17775
                and     ebx, [esp+8]
17776
                xor     ebp, [esp+18h]
17777
                xor     ebx, edx
17778
                xor     ebp, [esp]
17779
                xor     ebx, ebp
17780
                mov     ebp, edi
17781
                and     ebx, [esp+14h]
17782
                and     ebp, [esp+18h]
17783
                and     edi, edx
17784
                xor     ebp, ecx
17785
                xor     ebx, [esp]
17786
                ror     eax, 0Bh
17787
                xor     ebp, edx
17788
                mov     edx, [esi+54h]
17789
                and     ebp, [esp+8]
17790
                xor     ebx, edi
17791
                xor     ebp, ebx
17792
                lea     edx, [eax+edx-5B7BDFFCh]
17793
                ror     ebp, 7
17794
                add     ebp, edx
17795
                mov     eax, [esp+0Ch]
17796
                mov     [esp+10h], ebp
17797
                mov     ebp, [esp+18h]
17798
                mov     ecx, [esp]
17799
                mov     edx, [esp+8]
17800
                mov     edi, ebp
17801
                mov     ebx, edx
17802
                xor     ebp, 0FFFFFFFFh
17803
                xor     ebx, 0FFFFFFFFh
17804
                and     ebp, ecx
17805
                and     ebx, [esp+4]
17806
                xor     ebp, [esp+14h]
17807
                xor     ebx, edx
17808
                xor     ebp, [esp+1Ch]
17809
                xor     ebx, ebp
17810
                mov     ebp, edi
17811
                and     ebx, [esp+10h]
17812
                and     ebp, [esp+14h]
17813
                and     edi, edx
17814
                xor     ebp, ecx
17815
                xor     ebx, [esp+1Ch]
17816
                ror     eax, 0Bh
17817
                xor     ebp, edx
17818
                mov     edx, [esi+20h]
17819
                and     ebp, [esp+4]
17820
                xor     ebx, edi
17821
                xor     ebp, ebx
17822
                lea     edx, [eax+edx+69C8F04Ah]
17823
                ror     ebp, 7
17824
                add     ebp, edx
17825
                mov     eax, [esp+8]
17826
                mov     [esp+0Ch], ebp
17827
                mov     ebp, [esp+14h]
17828
                mov     ecx, [esp+1Ch]
17829
                mov     edx, [esp+4]
17830
                mov     edi, ebp
17831
                mov     ebx, edx
17832
                xor     ebp, 0FFFFFFFFh
17833
                xor     ebx, 0FFFFFFFFh
17834
                and     ebp, ecx
17835
                and     ebx, [esp]
17836
                xor     ebp, [esp+10h]
17837
                xor     ebx, edx
17838
                xor     ebp, [esp+18h]
17839
                xor     ebx, ebp
17840
                mov     ebp, edi
17841
                and     ebx, [esp+0Ch]
17842
                and     ebp, [esp+10h]
17843
                and     edi, edx
17844
                xor     ebp, ecx
17845
                xor     ebx, [esp+18h]
17846
                ror     eax, 0Bh
17847
                xor     ebp, edx
17848
                mov     edx, [esi+6Ch]
17849
                and     ebp, [esp]
17850
                xor     ebx, edi
17851
                xor     ebp, ebx
17852
                lea     edx, [eax+edx-61E064A2h]
17853
                ror     ebp, 7
17854
                add     ebp, edx
17855
                mov     eax, [esp+4]
17856
                mov     [esp+8], ebp
17857
                mov     ebp, [esp+10h]
17858
                mov     ecx, [esp+18h]
17859
                mov     edx, [esp]
17860
                mov     edi, ebp
17861
                mov     ebx, edx
17862
                xor     ebp, 0FFFFFFFFh
17863
                xor     ebx, 0FFFFFFFFh
17864
                and     ebp, ecx
17865
                and     ebx, [esp+1Ch]
17866
                xor     ebp, [esp+0Ch]
17867
                xor     ebx, edx
17868
                xor     ebp, [esp+14h]
17869
                xor     ebx, ebp
17870
                mov     ebp, edi
17871
                and     ebx, [esp+8]
17872
                and     ebp, [esp+0Ch]
17873
                and     edi, edx
17874
                xor     ebp, ecx
17875
                xor     ebx, [esp+14h]
17876
                ror     eax, 0Bh
17877
                xor     ebp, edx
17878
                mov     edx, [esi+30h]
17879
                and     ebp, [esp+1Ch]
17880
                xor     ebx, edi
17881
                xor     ebp, ebx
17882
                lea     edx, [eax+edx+21C66842h]
17883
                ror     ebp, 7
17884
                add     ebp, edx
17885
                mov     eax, [esp]
17886
                mov     [esp+4], ebp
17887
                mov     ebp, [esp+0Ch]
17888
                mov     ecx, [esp+14h]
17889
                mov     edx, [esp+1Ch]
17890
                mov     edi, ebp
17891
                mov     ebx, edx
17892
                xor     ebp, 0FFFFFFFFh
17893
                xor     ebx, 0FFFFFFFFh
17894
                and     ebp, ecx
17895
                and     ebx, [esp+18h]
17896
                xor     ebp, [esp+8]
17897
                xor     ebx, edx
17898
                xor     ebp, [esp+10h]
17899
                xor     ebx, ebp
17900
                mov     ebp, edi
17901
                and     ebx, [esp+4]
17902
                and     ebp, [esp+8]
17903
                and     edi, edx
17904
                xor     ebp, ecx
17905
                xor     ebx, [esp+10h]
17906
                ror     eax, 0Bh
17907
                xor     ebp, edx
17908
                mov     edx, [esi+24h]
17909
                and     ebp, [esp+18h]
17910
                xor     ebx, edi
17911
                xor     ebp, ebx
17912
                lea     edx, [eax+edx-9169366h]
17913
                ror     ebp, 7
17914
                add     ebp, edx
17915
                mov     eax, [esp+1Ch]
17916
                mov     [esp], ebp
17917
                mov     ebp, [esp+8]
17918
                mov     ecx, [esp+10h]
17919
                mov     edx, [esp+18h]
17920
                mov     edi, ebp
17921
                mov     ebx, edx
17922
                xor     ebp, 0FFFFFFFFh
17923
                xor     ebx, 0FFFFFFFFh
17924
                and     ebp, ecx
17925
                and     ebx, [esp+14h]
17926
                xor     ebp, [esp+4]
17927
                xor     ebx, edx
17928
                xor     ebp, [esp+0Ch]
17929
                xor     ebx, ebp
17930
                mov     ebp, edi
17931
                and     ebx, [esp]
17932
                and     ebp, [esp+4]
17933
                and     edi, edx
17934
                xor     ebp, ecx
17935
                xor     ebx, [esp+0Ch]
17936
                ror     eax, 0Bh
17937
                xor     ebp, edx
17938
                mov     edx, [esi+4]
17939
                and     ebp, [esp+14h]
17940
                xor     ebx, edi
17941
                xor     ebp, ebx
17942
                lea     edx, [eax+edx+670C9C61h]
17943
                ror     ebp, 7
17944
                add     ebp, edx
17945
                mov     eax, [esp+18h]
17946
                mov     [esp+1Ch], ebp
17947
                mov     ebp, [esp+4]
17948
                mov     ecx, [esp+0Ch]
17949
                mov     edx, [esp+14h]
17950
                mov     edi, ebp
17951
                mov     ebx, edx
17952
                xor     ebp, 0FFFFFFFFh
17953
                xor     ebx, 0FFFFFFFFh
17954
                and     ebp, ecx
17955
                and     ebx, [esp+10h]
17956
                xor     ebp, [esp]
17957
                xor     ebx, edx
17958
                xor     ebp, [esp+8]
17959
                xor     ebx, ebp
17960
                mov     ebp, edi
17961
                and     ebx, [esp+1Ch]
17962
                and     ebp, [esp]
17963
                and     edi, edx
17964
                xor     ebp, ecx
17965
                xor     ebx, [esp+8]
17966
                ror     eax, 0Bh
17967
                xor     ebp, edx
17968
                mov     edx, [esi+74h]
17969
                and     ebp, [esp+10h]
17970
                xor     ebx, edi
17971
                xor     ebp, ebx
17972
                lea     edx, [eax+edx-542C7710h]
17973
                ror     ebp, 7
17974
                add     ebp, edx
17975
                mov     eax, [esp+14h]
17976
                mov     [esp+18h], ebp
17977
                mov     ebp, [esp]
17978
                mov     ecx, [esp+8]
17979
                mov     edx, [esp+10h]
17980
                mov     edi, ebp
17981
                mov     ebx, edx
17982
                xor     ebp, 0FFFFFFFFh
17983
                xor     ebx, 0FFFFFFFFh
17984
                and     ebp, ecx
17985
                and     ebx, [esp+0Ch]
17986
                xor     ebp, [esp+1Ch]
17987
                xor     ebx, edx
17988
                xor     ebp, [esp+4]
17989
                xor     ebx, ebp
17990
                mov     ebp, edi
17991
                and     ebx, [esp+18h]
17992
                and     ebp, [esp+1Ch]
17993
                and     edi, edx
17994
                xor     ebp, ecx
17995
                xor     ebx, [esp+4]
17996
                ror     eax, 0Bh
17997
                xor     ebp, edx
17998
                mov     edx, [esi+14h]
17999
                and     ebp, [esp+0Ch]
18000
                xor     ebx, edi
18001
                xor     ebp, ebx
18002
                lea     edx, [eax+edx+6A51A0D2h]
18003
                ror     ebp, 7
18004
                add     ebp, edx
18005
                mov     eax, [esp+10h]
18006
                mov     [esp+14h], ebp
18007
                mov     ebp, [esp+1Ch]
18008
                mov     ecx, [esp+4]
18009
                mov     edx, [esp+0Ch]
18010
                mov     edi, ebp
18011
                mov     ebx, edx
18012
                xor     ebp, 0FFFFFFFFh
18013
                xor     ebx, 0FFFFFFFFh
18014
                and     ebp, ecx
18015
                and     ebx, [esp+8]
18016
                xor     ebp, [esp+18h]
18017
                xor     ebx, edx
18018
                xor     ebp, [esp]
18019
                xor     ebx, ebp
18020
                mov     ebp, edi
18021
                and     ebx, [esp+14h]
18022
                and     ebp, [esp+18h]
18023
                and     edi, edx
18024
                xor     ebp, ecx
18025
                xor     ebx, [esp]
18026
                ror     eax, 0Bh
18027
                xor     ebp, edx
18028
                mov     edx, [esi+3Ch]
18029
                and     ebp, [esp+8]
18030
                xor     ebx, edi
18031
                xor     ebp, ebx
18032
                lea     edx, [eax+edx-27ABD098h]
18033
                ror     ebp, 7
18034
                add     ebp, edx
18035
                mov     eax, [esp+0Ch]
18036
                mov     [esp+10h], ebp
18037
                mov     ebp, [esp+18h]
18038
                mov     ecx, [esp]
18039
                mov     edx, [esp+8]
18040
                mov     edi, ebp
18041
                mov     ebx, edx
18042
                xor     ebp, 0FFFFFFFFh
18043
                xor     ebx, 0FFFFFFFFh
18044
                and     ebp, ecx
18045
                and     ebx, [esp+4]
18046
                xor     ebp, [esp+14h]
18047
                xor     ebx, edx
18048
                xor     ebp, [esp+1Ch]
18049
                xor     ebx, ebp
18050
                mov     ebp, edi
18051
                and     ebx, [esp+10h]
18052
                and     ebp, [esp+14h]
18053
                and     edi, edx
18054
                xor     ebp, ecx
18055
                xor     ebx, [esp+1Ch]
18056
                ror     eax, 0Bh
18057
                xor     ebp, edx
18058
                mov     edx, [esi+44h]
18059
                and     ebp, [esp+4]
18060
                xor     ebx, edi
18061
                xor     ebp, ebx
18062
                lea     edx, [eax+edx-69F058D8h]
18063
                ror     ebp, 7
18064
                add     ebp, edx
18065
                mov     eax, [esp+8]
18066
                mov     [esp+0Ch], ebp
18067
                mov     ebp, [esp+14h]
18068
                mov     ecx, [esp+1Ch]
18069
                mov     edx, [esp+4]
18070
                mov     edi, ebp
18071
                mov     ebx, edx
18072
                xor     ebp, 0FFFFFFFFh
18073
                xor     ebx, 0FFFFFFFFh
18074
                and     ebp, ecx
18075
                and     ebx, [esp]
18076
                xor     ebp, [esp+10h]
18077
                xor     ebx, edx
18078
                xor     ebp, [esp+18h]
18079
                xor     ebx, ebp
18080
                mov     ebp, edi
18081
                and     ebx, [esp+0Ch]
18082
                and     ebp, [esp+10h]
18083
                and     edi, edx
18084
                xor     ebp, ecx
18085
                xor     ebx, [esp+18h]
18086
                ror     eax, 0Bh
18087
                xor     ebp, edx
18088
                mov     edx, [esi+28h]
18089
                and     ebp, [esp]
18090
                xor     ebx, edi
18091
                xor     ebp, ebx
18092
                lea     edx, [eax+edx-54AECC5Dh]
18093
                ror     ebp, 7
18094
                add     ebp, edx
18095
                mov     eax, [esp+4]
18096
                mov     [esp+8], ebp
18097
                mov     ebp, [esp+10h]
18098
                mov     ecx, [esp+18h]
18099
                mov     edx, [esp]
18100
                mov     edi, ebp
18101
                mov     ebx, edx
18102
                xor     ebp, 0FFFFFFFFh
18103
                xor     ebx, 0FFFFFFFFh
18104
                and     ebp, ecx
18105
                and     ebx, [esp+1Ch]
18106
                xor     ebp, [esp+0Ch]
18107
                xor     ebx, edx
18108
                xor     ebp, [esp+14h]
18109
                xor     ebx, ebp
18110
                mov     ebp, edi
18111
                and     ebx, [esp+8]
18112
                and     ebp, [esp+0Ch]
18113
                and     edi, edx
18114
                xor     ebp, ecx
18115
                xor     ebx, [esp+14h]
18116
                ror     eax, 0Bh
18117
                xor     ebp, edx
18118
                mov     edx, [esi+40h]
18119
                and     ebp, [esp+1Ch]
18120
                xor     ebx, edi
18121
                xor     ebp, ebx
18122
                lea     edx, [eax+edx+6EEF0B6Ch]
18123
                ror     ebp, 7
18124
                add     ebp, edx
18125
                mov     eax, [esp]
18126
                mov     [esp+4], ebp
18127
                mov     ebp, [esp+0Ch]
18128
                mov     ecx, [esp+14h]
18129
                mov     edx, [esp+1Ch]
18130
                mov     edi, ebp
18131
                mov     ebx, edx
18132
                xor     ebp, 0FFFFFFFFh
18133
                xor     ebx, 0FFFFFFFFh
18134
                and     ebp, ecx
18135
                and     ebx, [esp+18h]
18136
                xor     ebp, [esp+8]
18137
                xor     ebx, edx
18138
                xor     ebp, [esp+10h]
18139
                xor     ebx, ebp
18140
                mov     ebp, edi
18141
                and     ebx, [esp+4]
18142
                and     ebp, [esp+8]
18143
                and     edi, edx
18144
                xor     ebp, ecx
18145
                xor     ebx, [esp+10h]
18146
                ror     eax, 0Bh
18147
                xor     ebp, edx
18148
                mov     edx, [esi+34h]
18149
                and     ebp, [esp+18h]
18150
                xor     ebx, edi
18151
                xor     ebp, ebx
18152
                lea     edx, [eax+edx+137A3BE4h]
18153
                ror     ebp, 7
18154
                add     ebp, edx
18155
                mov     eax, [esp+1Ch]
18156
                mov     [esp], ebp
18157
                mov     edi, [esp+24h]
18158
                mov     eax, [esp]
18159
                mov     ebx, [esp+4]
18160
                add     [edi], eax
18161
                add     [edi+4], ebx
18162
                mov     ecx, [esp+8]
18163
                mov     edx, [esp+0Ch]
18164
                add     [edi+8], ecx
18165
                add     [edi+0Ch], edx
18166
                mov     eax, [esp+10h]
18167
                mov     ebx, [esp+14h]
18168
                add     [edi+10h], eax
18169
                add     [edi+14h], ebx
18170
                mov     ebp, [esp+28h]
18171
                mov     ecx, [esp+18h]
18172
                mov     edx, [esp+1Ch]
18173
                mov     esp, ebp
18174
                add     [edi+18h], ecx
18175
                add     [edi+1Ch], edx
18176
                pop     ebp
18177
                pop     edi
18178
                pop     esi
18179
                pop     ebx
18180
end;
18181
18182
procedure THashBaseHaval.DoTransform5(Buffer: PUInt32Array);
18183
asm
18184
                push    ebx
18185
                push    esi
18186
                push    edi
18187
                lea     edi, [eax].THashBaseHaval.FDigest
18188
                mov     esi, edx
18189
                push    ebp
18190
                mov     ebp, esp
18191
                add     esp, 0FFFFFFD4h
18192
                and     esp, 0FFFFFFC0h
18193
                mov     eax, [edi]
18194
                mov     ebx, [edi+4]
18195
                mov     [esp+20h], esi
18196
                mov     [esp+24h], edi
18197
                mov     [esp+28h], ebp
18198
                mov     [esp], eax
18199
                mov     [esp+4], ebx
18200
                mov     ecx, [edi+8]
18201
                mov     edx, [edi+0Ch]
18202
                mov     [esp+8], ecx
18203
                mov     [esp+0Ch], edx
18204
                mov     eax, [edi+10h]
18205
                mov     ebx, [edi+14h]
18206
                mov     [esp+10h], eax
18207
                mov     [esp+14h], ebx
18208
                mov     ecx, [edi+18h]
18209
                mov     edx, [edi+1Ch]
18210
                mov     [esp+18h], ecx
18211
                mov     [esp+1Ch], edx
18212
                mov     eax, edx
18213
                mov     ebp, [esp+10h]
18214
                mov     ebx, [esp+4]
18215
                mov     ecx, [esp+18h]
18216
                ror     eax, 0Bh
18217
                xor     ebx, ecx
18218
                mov     edi, [esp+0Ch]
18219
                and     ebx, [esp+8]
18220
                and     edi, [esp]
18221
                xor     ecx, ebx
18222
                and     ebp, [esp+14h]
18223
                xor     edi, ecx
18224
                mov     edx, [esi]
18225
                xor     ebp, edi
18226
                add     eax, edx
18227
                ror     ebp, 7
18228
                add     ebp, eax
18229
                mov     eax, [esp+18h]
18230
                mov     [esp+1Ch], ebp
18231
                mov     ebp, [esp+0Ch]
18232
                mov     ebx, [esp]
18233
                mov     ecx, [esp+14h]
18234
                ror     eax, 0Bh
18235
                xor     ebx, ecx
18236
                mov     edi, [esp+8]
18237
                and     ebx, [esp+4]
18238
                and     edi, [esp+1Ch]
18239
                xor     ecx, ebx
18240
                and     ebp, [esp+10h]
18241
                xor     edi, ecx
18242
                mov     edx, [esi+4]
18243
                xor     ebp, edi
18244
                add     eax, edx
18245
                ror     ebp, 7
18246
                add     ebp, eax
18247
                mov     eax, [esp+14h]
18248
                mov     [esp+18h], ebp
18249
                mov     ebp, [esp+8]
18250
                mov     ebx, [esp+1Ch]
18251
                mov     ecx, [esp+10h]
18252
                ror     eax, 0Bh
18253
                xor     ebx, ecx
18254
                mov     edi, [esp+4]
18255
                and     ebx, [esp]
18256
                and     edi, [esp+18h]
18257
                xor     ecx, ebx
18258
                and     ebp, [esp+0Ch]
18259
                xor     edi, ecx
18260
                mov     edx, [esi+8]
18261
                xor     ebp, edi
18262
                add     eax, edx
18263
                ror     ebp, 7
18264
                add     ebp, eax
18265
                mov     eax, [esp+10h]
18266
                mov     [esp+14h], ebp
18267
                mov     ebp, [esp+4]
18268
                mov     ebx, [esp+18h]
18269
                mov     ecx, [esp+0Ch]
18270
                ror     eax, 0Bh
18271
                xor     ebx, ecx
18272
                mov     edi, [esp]
18273
                and     ebx, [esp+1Ch]
18274
                and     edi, [esp+14h]
18275
                xor     ecx, ebx
18276
                and     ebp, [esp+8]
18277
                xor     edi, ecx
18278
                mov     edx, [esi+0Ch]
18279
                xor     ebp, edi
18280
                add     eax, edx
18281
                ror     ebp, 7
18282
                add     ebp, eax
18283
                mov     eax, [esp+0Ch]
18284
                mov     [esp+10h], ebp
18285
                mov     ebp, [esp]
18286
                mov     ebx, [esp+14h]
18287
                mov     ecx, [esp+8]
18288
                ror     eax, 0Bh
18289
                xor     ebx, ecx
18290
                mov     edi, [esp+1Ch]
18291
                and     ebx, [esp+18h]
18292
                and     edi, [esp+10h]
18293
                xor     ecx, ebx
18294
                and     ebp, [esp+4]
18295
                xor     edi, ecx
18296
                mov     edx, [esi+10h]
18297
                xor     ebp, edi
18298
                add     eax, edx
18299
                ror     ebp, 7
18300
                add     ebp, eax
18301
                mov     eax, [esp+8]
18302
                mov     [esp+0Ch], ebp
18303
                mov     ebp, [esp+1Ch]
18304
                mov     ebx, [esp+10h]
18305
                mov     ecx, [esp+4]
18306
                ror     eax, 0Bh
18307
                xor     ebx, ecx
18308
                mov     edi, [esp+18h]
18309
                and     ebx, [esp+14h]
18310
                and     edi, [esp+0Ch]
18311
                xor     ecx, ebx
18312
                and     ebp, [esp]
18313
                xor     edi, ecx
18314
                mov     edx, [esi+14h]
18315
                xor     ebp, edi
18316
                add     eax, edx
18317
                ror     ebp, 7
18318
                add     ebp, eax
18319
                mov     eax, [esp+4]
18320
                mov     [esp+8], ebp
18321
                mov     ebp, [esp+18h]
18322
                mov     ebx, [esp+0Ch]
18323
                mov     ecx, [esp]
18324
                ror     eax, 0Bh
18325
                xor     ebx, ecx
18326
                mov     edi, [esp+14h]
18327
                and     ebx, [esp+10h]
18328
                and     edi, [esp+8]
18329
                xor     ecx, ebx
18330
                and     ebp, [esp+1Ch]
18331
                xor     edi, ecx
18332
                mov     edx, [esi+18h]
18333
                xor     ebp, edi
18334
                add     eax, edx
18335
                ror     ebp, 7
18336
                add     ebp, eax
18337
                mov     eax, [esp]
18338
                mov     [esp+4], ebp
18339
                mov     ebp, [esp+14h]
18340
                mov     ebx, [esp+8]
18341
                mov     ecx, [esp+1Ch]
18342
                ror     eax, 0Bh
18343
                xor     ebx, ecx
18344
                mov     edi, [esp+10h]
18345
                and     ebx, [esp+0Ch]
18346
                and     edi, [esp+4]
18347
                xor     ecx, ebx
18348
                and     ebp, [esp+18h]
18349
                xor     edi, ecx
18350
                mov     edx, [esi+1Ch]
18351
                xor     ebp, edi
18352
                add     eax, edx
18353
                ror     ebp, 7
18354
                add     ebp, eax
18355
                mov     eax, [esp+1Ch]
18356
                mov     [esp], ebp
18357
                mov     ebp, [esp+10h]
18358
                mov     ebx, [esp+4]
18359
                mov     ecx, [esp+18h]
18360
                ror     eax, 0Bh
18361
                xor     ebx, ecx
18362
                mov     edi, [esp+0Ch]
18363
                and     ebx, [esp+8]
18364
                and     edi, [esp]
18365
                xor     ecx, ebx
18366
                and     ebp, [esp+14h]
18367
                xor     edi, ecx
18368
                mov     edx, [esi+20h]
18369
                xor     ebp, edi
18370
                add     eax, edx
18371
                ror     ebp, 7
18372
                add     ebp, eax
18373
                mov     eax, [esp+18h]
18374
                mov     [esp+1Ch], ebp
18375
                mov     ebp, [esp+0Ch]
18376
                mov     ebx, [esp]
18377
                mov     ecx, [esp+14h]
18378
                ror     eax, 0Bh
18379
                xor     ebx, ecx
18380
                mov     edi, [esp+8]
18381
                and     ebx, [esp+4]
18382
                and     edi, [esp+1Ch]
18383
                xor     ecx, ebx
18384
                and     ebp, [esp+10h]
18385
                xor     edi, ecx
18386
                mov     edx, [esi+24h]
18387
                xor     ebp, edi
18388
                add     eax, edx
18389
                ror     ebp, 7
18390
                add     ebp, eax
18391
                mov     eax, [esp+14h]
18392
                mov     [esp+18h], ebp
18393
                mov     ebp, [esp+8]
18394
                mov     ebx, [esp+1Ch]
18395
                mov     ecx, [esp+10h]
18396
                ror     eax, 0Bh
18397
                xor     ebx, ecx
18398
                mov     edi, [esp+4]
18399
                and     ebx, [esp]
18400
                and     edi, [esp+18h]
18401
                xor     ecx, ebx
18402
                and     ebp, [esp+0Ch]
18403
                xor     edi, ecx
18404
                mov     edx, [esi+28h]
18405
                xor     ebp, edi
18406
                add     eax, edx
18407
                ror     ebp, 7
18408
                add     ebp, eax
18409
                mov     eax, [esp+10h]
18410
                mov     [esp+14h], ebp
18411
                mov     ebp, [esp+4]
18412
                mov     ebx, [esp+18h]
18413
                mov     ecx, [esp+0Ch]
18414
                ror     eax, 0Bh
18415
                xor     ebx, ecx
18416
                mov     edi, [esp]
18417
                and     ebx, [esp+1Ch]
18418
                and     edi, [esp+14h]
18419
                xor     ecx, ebx
18420
                and     ebp, [esp+8]
18421
                xor     edi, ecx
18422
                mov     edx, [esi+2Ch]
18423
                xor     ebp, edi
18424
                add     eax, edx
18425
                ror     ebp, 7
18426
                add     ebp, eax
18427
                mov     eax, [esp+0Ch]
18428
                mov     [esp+10h], ebp
18429
                mov     ebp, [esp]
18430
                mov     ebx, [esp+14h]
18431
                mov     ecx, [esp+8]
18432
                ror     eax, 0Bh
18433
                xor     ebx, ecx
18434
                mov     edi, [esp+1Ch]
18435
                and     ebx, [esp+18h]
18436
                and     edi, [esp+10h]
18437
                xor     ecx, ebx
18438
                and     ebp, [esp+4]
18439
                xor     edi, ecx
18440
                mov     edx, [esi+30h]
18441
                xor     ebp, edi
18442
                add     eax, edx
18443
                ror     ebp, 7
18444
                add     ebp, eax
18445
                mov     eax, [esp+8]
18446
                mov     [esp+0Ch], ebp
18447
                mov     ebp, [esp+1Ch]
18448
                mov     ebx, [esp+10h]
18449
                mov     ecx, [esp+4]
18450
                ror     eax, 0Bh
18451
                xor     ebx, ecx
18452
                mov     edi, [esp+18h]
18453
                and     ebx, [esp+14h]
18454
                and     edi, [esp+0Ch]
18455
                xor     ecx, ebx
18456
                and     ebp, [esp]
18457
                xor     edi, ecx
18458
                mov     edx, [esi+34h]
18459
                xor     ebp, edi
18460
                add     eax, edx
18461
                ror     ebp, 7
18462
                add     ebp, eax
18463
                mov     eax, [esp+4]
18464
                mov     [esp+8], ebp
18465
                mov     ebp, [esp+18h]
18466
                mov     ebx, [esp+0Ch]
18467
                mov     ecx, [esp]
18468
                ror     eax, 0Bh
18469
                xor     ebx, ecx
18470
                mov     edi, [esp+14h]
18471
                and     ebx, [esp+10h]
18472
                and     edi, [esp+8]
18473
                xor     ecx, ebx
18474
                and     ebp, [esp+1Ch]
18475
                xor     edi, ecx
18476
                mov     edx, [esi+38h]
18477
                xor     ebp, edi
18478
                add     eax, edx
18479
                ror     ebp, 7
18480
                add     ebp, eax
18481
                mov     eax, [esp]
18482
                mov     [esp+4], ebp
18483
                mov     ebp, [esp+14h]
18484
                mov     ebx, [esp+8]
18485
                mov     ecx, [esp+1Ch]
18486
                ror     eax, 0Bh
18487
                xor     ebx, ecx
18488
                mov     edi, [esp+10h]
18489
                and     ebx, [esp+0Ch]
18490
                and     edi, [esp+4]
18491
                xor     ecx, ebx
18492
                and     ebp, [esp+18h]
18493
                xor     edi, ecx
18494
                mov     edx, [esi+3Ch]
18495
                xor     ebp, edi
18496
                add     eax, edx
18497
                ror     ebp, 7
18498
                add     ebp, eax
18499
                mov     eax, [esp+1Ch]
18500
                mov     [esp], ebp
18501
                mov     ebp, [esp+10h]
18502
                mov     ebx, [esp+4]
18503
                mov     ecx, [esp+18h]
18504
                ror     eax, 0Bh
18505
                xor     ebx, ecx
18506
                mov     edi, [esp+0Ch]
18507
                and     ebx, [esp+8]
18508
                and     edi, [esp]
18509
                xor     ecx, ebx
18510
                and     ebp, [esp+14h]
18511
                xor     edi, ecx
18512
                mov     edx, [esi+40h]
18513
                xor     ebp, edi
18514
                add     eax, edx
18515
                ror     ebp, 7
18516
                add     ebp, eax
18517
                mov     eax, [esp+18h]
18518
                mov     [esp+1Ch], ebp
18519
                mov     ebp, [esp+0Ch]
18520
                mov     ebx, [esp]
18521
                mov     ecx, [esp+14h]
18522
                ror     eax, 0Bh
18523
                xor     ebx, ecx
18524
                mov     edi, [esp+8]
18525
                and     ebx, [esp+4]
18526
                and     edi, [esp+1Ch]
18527
                xor     ecx, ebx
18528
                and     ebp, [esp+10h]
18529
                xor     edi, ecx
18530
                mov     edx, [esi+44h]
18531
                xor     ebp, edi
18532
                add     eax, edx
18533
                ror     ebp, 7
18534
                add     ebp, eax
18535
                mov     eax, [esp+14h]
18536
                mov     [esp+18h], ebp
18537
                mov     ebp, [esp+8]
18538
                mov     ebx, [esp+1Ch]
18539
                mov     ecx, [esp+10h]
18540
                ror     eax, 0Bh
18541
                xor     ebx, ecx
18542
                mov     edi, [esp+4]
18543
                and     ebx, [esp]
18544
                and     edi, [esp+18h]
18545
                xor     ecx, ebx
18546
                and     ebp, [esp+0Ch]
18547
                xor     edi, ecx
18548
                mov     edx, [esi+48h]
18549
                xor     ebp, edi
18550
                add     eax, edx
18551
                ror     ebp, 7
18552
                add     ebp, eax
18553
                mov     eax, [esp+10h]
18554
                mov     [esp+14h], ebp
18555
                mov     ebp, [esp+4]
18556
                mov     ebx, [esp+18h]
18557
                mov     ecx, [esp+0Ch]
18558
                ror     eax, 0Bh
18559
                xor     ebx, ecx
18560
                mov     edi, [esp]
18561
                and     ebx, [esp+1Ch]
18562
                and     edi, [esp+14h]
18563
                xor     ecx, ebx
18564
                and     ebp, [esp+8]
18565
                xor     edi, ecx
18566
                mov     edx, [esi+4Ch]
18567
                xor     ebp, edi
18568
                add     eax, edx
18569
                ror     ebp, 7
18570
                add     ebp, eax
18571
                mov     eax, [esp+0Ch]
18572
                mov     [esp+10h], ebp
18573
                mov     ebp, [esp]
18574
                mov     ebx, [esp+14h]
18575
                mov     ecx, [esp+8]
18576
                ror     eax, 0Bh
18577
                xor     ebx, ecx
18578
                mov     edi, [esp+1Ch]
18579
                and     ebx, [esp+18h]
18580
                and     edi, [esp+10h]
18581
                xor     ecx, ebx
18582
                and     ebp, [esp+4]
18583
                xor     edi, ecx
18584
                mov     edx, [esi+50h]
18585
                xor     ebp, edi
18586
                add     eax, edx
18587
                ror     ebp, 7
18588
                add     ebp, eax
18589
                mov     eax, [esp+8]
18590
                mov     [esp+0Ch], ebp
18591
                mov     ebp, [esp+1Ch]
18592
                mov     ebx, [esp+10h]
18593
                mov     ecx, [esp+4]
18594
                ror     eax, 0Bh
18595
                xor     ebx, ecx
18596
                mov     edi, [esp+18h]
18597
                and     ebx, [esp+14h]
18598
                and     edi, [esp+0Ch]
18599
                xor     ecx, ebx
18600
                and     ebp, [esp]
18601
                xor     edi, ecx
18602
                mov     edx, [esi+54h]
18603
                xor     ebp, edi
18604
                add     eax, edx
18605
                ror     ebp, 7
18606
                add     ebp, eax
18607
                mov     eax, [esp+4]
18608
                mov     [esp+8], ebp
18609
                mov     ebp, [esp+18h]
18610
                mov     ebx, [esp+0Ch]
18611
                mov     ecx, [esp]
18612
                ror     eax, 0Bh
18613
                xor     ebx, ecx
18614
                mov     edi, [esp+14h]
18615
                and     ebx, [esp+10h]
18616
                and     edi, [esp+8]
18617
                xor     ecx, ebx
18618
                and     ebp, [esp+1Ch]
18619
                xor     edi, ecx
18620
                mov     edx, [esi+58h]
18621
                xor     ebp, edi
18622
                add     eax, edx
18623
                ror     ebp, 7
18624
                add     ebp, eax
18625
                mov     eax, [esp]
18626
                mov     [esp+4], ebp
18627
                mov     ebp, [esp+14h]
18628
                mov     ebx, [esp+8]
18629
                mov     ecx, [esp+1Ch]
18630
                ror     eax, 0Bh
18631
                xor     ebx, ecx
18632
                mov     edi, [esp+10h]
18633
                and     ebx, [esp+0Ch]
18634
                and     edi, [esp+4]
18635
                xor     ecx, ebx
18636
                and     ebp, [esp+18h]
18637
                xor     edi, ecx
18638
                mov     edx, [esi+5Ch]
18639
                xor     ebp, edi
18640
                add     eax, edx
18641
                ror     ebp, 7
18642
                add     ebp, eax
18643
                mov     eax, [esp+1Ch]
18644
                mov     [esp], ebp
18645
                mov     ebp, [esp+10h]
18646
                mov     ebx, [esp+4]
18647
                mov     ecx, [esp+18h]
18648
                ror     eax, 0Bh
18649
                xor     ebx, ecx
18650
                mov     edi, [esp+0Ch]
18651
                and     ebx, [esp+8]
18652
                and     edi, [esp]
18653
                xor     ecx, ebx
18654
                and     ebp, [esp+14h]
18655
                xor     edi, ecx
18656
                mov     edx, [esi+60h]
18657
                xor     ebp, edi
18658
                add     eax, edx
18659
                ror     ebp, 7
18660
                add     ebp, eax
18661
                mov     eax, [esp+18h]
18662
                mov     [esp+1Ch], ebp
18663
                mov     ebp, [esp+0Ch]
18664
                mov     ebx, [esp]
18665
                mov     ecx, [esp+14h]
18666
                ror     eax, 0Bh
18667
                xor     ebx, ecx
18668
                mov     edi, [esp+8]
18669
                and     ebx, [esp+4]
18670
                and     edi, [esp+1Ch]
18671
                xor     ecx, ebx
18672
                and     ebp, [esp+10h]
18673
                xor     edi, ecx
18674
                mov     edx, [esi+64h]
18675
                xor     ebp, edi
18676
                add     eax, edx
18677
                ror     ebp, 7
18678
                add     ebp, eax
18679
                mov     eax, [esp+14h]
18680
                mov     [esp+18h], ebp
18681
                mov     ebp, [esp+8]
18682
                mov     ebx, [esp+1Ch]
18683
                mov     ecx, [esp+10h]
18684
                ror     eax, 0Bh
18685
                xor     ebx, ecx
18686
                mov     edi, [esp+4]
18687
                and     ebx, [esp]
18688
                and     edi, [esp+18h]
18689
                xor     ecx, ebx
18690
                and     ebp, [esp+0Ch]
18691
                xor     edi, ecx
18692
                mov     edx, [esi+68h]
18693
                xor     ebp, edi
18694
                add     eax, edx
18695
                ror     ebp, 7
18696
                add     ebp, eax
18697
                mov     eax, [esp+10h]
18698
                mov     [esp+14h], ebp
18699
                mov     ebp, [esp+4]
18700
                mov     ebx, [esp+18h]
18701
                mov     ecx, [esp+0Ch]
18702
                ror     eax, 0Bh
18703
                xor     ebx, ecx
18704
                mov     edi, [esp]
18705
                and     ebx, [esp+1Ch]
18706
                and     edi, [esp+14h]
18707
                xor     ecx, ebx
18708
                and     ebp, [esp+8]
18709
                xor     edi, ecx
18710
                mov     edx, [esi+6Ch]
18711
                xor     ebp, edi
18712
                add     eax, edx
18713
                ror     ebp, 7
18714
                add     ebp, eax
18715
                mov     eax, [esp+0Ch]
18716
                mov     [esp+10h], ebp
18717
                mov     ebp, [esp]
18718
                mov     ebx, [esp+14h]
18719
                mov     ecx, [esp+8]
18720
                ror     eax, 0Bh
18721
                xor     ebx, ecx
18722
                mov     edi, [esp+1Ch]
18723
                and     ebx, [esp+18h]
18724
                and     edi, [esp+10h]
18725
                xor     ecx, ebx
18726
                and     ebp, [esp+4]
18727
                xor     edi, ecx
18728
                mov     edx, [esi+70h]
18729
                xor     ebp, edi
18730
                add     eax, edx
18731
                ror     ebp, 7
18732
                add     ebp, eax
18733
                mov     eax, [esp+8]
18734
                mov     [esp+0Ch], ebp
18735
                mov     ebp, [esp+1Ch]
18736
                mov     ebx, [esp+10h]
18737
                mov     ecx, [esp+4]
18738
                ror     eax, 0Bh
18739
                xor     ebx, ecx
18740
                mov     edi, [esp+18h]
18741
                and     ebx, [esp+14h]
18742
                and     edi, [esp+0Ch]
18743
                xor     ecx, ebx
18744
                and     ebp, [esp]
18745
                xor     edi, ecx
18746
                mov     edx, [esi+74h]
18747
                xor     ebp, edi
18748
                add     eax, edx
18749
                ror     ebp, 7
18750
                add     ebp, eax
18751
                mov     eax, [esp+4]
18752
                mov     [esp+8], ebp
18753
                mov     ebp, [esp+18h]
18754
                mov     ebx, [esp+0Ch]
18755
                mov     ecx, [esp]
18756
                ror     eax, 0Bh
18757
                xor     ebx, ecx
18758
                mov     edi, [esp+14h]
18759
                and     ebx, [esp+10h]
18760
                and     edi, [esp+8]
18761
                xor     ecx, ebx
18762
                and     ebp, [esp+1Ch]
18763
                xor     edi, ecx
18764
                mov     edx, [esi+78h]
18765
                xor     ebp, edi
18766
                add     eax, edx
18767
                ror     ebp, 7
18768
                add     ebp, eax
18769
                mov     eax, [esp]
18770
                mov     [esp+4], ebp
18771
                mov     ebp, [esp+14h]
18772
                mov     ebx, [esp+8]
18773
                mov     ecx, [esp+1Ch]
18774
                ror     eax, 0Bh
18775
                xor     ebx, ecx
18776
                mov     edi, [esp+10h]
18777
                and     ebx, [esp+0Ch]
18778
                and     edi, [esp+4]
18779
                xor     ecx, ebx
18780
                and     ebp, [esp+18h]
18781
                xor     edi, ecx
18782
                mov     edx, [esi+7Ch]
18783
                xor     ebp, edi
18784
                add     eax, edx
18785
                ror     ebp, 7
18786
                add     ebp, eax
18787
                mov     eax, [esp+1Ch]
18788
                mov     [esp], ebp
18789
                mov     ebp, [esp]
18790
                mov     ebx, [esp+4]
18791
                mov     edi, [esp+8]
18792
                xor     ebp, 0FFFFFFFFh
18793
                mov     ecx, [esp+10h]
18794
                and     ebx, edi
18795
                mov     edx, [esp+14h]
18796
                and     ebp, ecx
18797
                xor     ebx, [esp+18h]
18798
                xor     ebp, edx
18799
                xor     ecx, edi
18800
                xor     ebx, ebp
18801
                and     ecx, [esp+4]
18802
                and     ebx, [esp+0Ch]
18803
                ror     eax, 0Bh
18804
                xor     ecx, edx
18805
                mov     ebp, [esi+14h]
18806
                xor     ecx, ebx
18807
                and     edi, [esp]
18808
                xor     ecx, edi
18809
                lea     ebp, [eax+ebp+452821E6h]
18810
                ror     ecx, 7
18811
                add     ebp, ecx
18812
                mov     eax, [esp+18h]
18813
                mov     [esp+1Ch], ebp
18814
                mov     ebx, [esp]
18815
                mov     edi, [esp+4]
18816
                xor     ebp, 0FFFFFFFFh
18817
                mov     ecx, [esp+0Ch]
18818
                and     ebx, edi
18819
                mov     edx, [esp+10h]
18820
                and     ebp, ecx
18821
                xor     ebx, [esp+14h]
18822
                xor     ebp, edx
18823
                xor     ecx, edi
18824
                xor     ebx, ebp
18825
                and     ecx, [esp]
18826
                and     ebx, [esp+8]
18827
                ror     eax, 0Bh
18828
                xor     ecx, edx
18829
                mov     ebp, [esi+38h]
18830
                xor     ecx, ebx
18831
                and     edi, [esp+1Ch]
18832
                xor     ecx, edi
18833
                lea     ebp, [eax+ebp+38D01377h]
18834
                ror     ecx, 7
18835
                add     ebp, ecx
18836
                mov     eax, [esp+14h]
18837
                mov     [esp+18h], ebp
18838
                mov     ebx, [esp+1Ch]
18839
                mov     edi, [esp]
18840
                xor     ebp, 0FFFFFFFFh
18841
                mov     ecx, [esp+8]
18842
                and     ebx, edi
18843
                mov     edx, [esp+0Ch]
18844
                and     ebp, ecx
18845
                xor     ebx, [esp+10h]
18846
                xor     ebp, edx
18847
                xor     ecx, edi
18848
                xor     ebx, ebp
18849
                and     ecx, [esp+1Ch]
18850
                and     ebx, [esp+4]
18851
                ror     eax, 0Bh
18852
                xor     ecx, edx
18853
                mov     ebp, [esi+68h]
18854
                xor     ecx, ebx
18855
                and     edi, [esp+18h]
18856
                xor     ecx, edi
18857
                lea     ebp, [eax+ebp-41AB9931h]
18858
                ror     ecx, 7
18859
                add     ebp, ecx
18860
                mov     eax, [esp+10h]
18861
                mov     [esp+14h], ebp
18862
                mov     ebx, [esp+18h]
18863
                mov     edi, [esp+1Ch]
18864
                xor     ebp, 0FFFFFFFFh
18865
                mov     ecx, [esp+4]
18866
                and     ebx, edi
18867
                mov     edx, [esp+8]
18868
                and     ebp, ecx
18869
                xor     ebx, [esp+0Ch]
18870
                xor     ebp, edx
18871
                xor     ecx, edi
18872
                xor     ebx, ebp
18873
                and     ecx, [esp+18h]
18874
                and     ebx, [esp]
18875
                ror     eax, 0Bh
18876
                xor     ecx, edx
18877
                mov     ebp, [esi+48h]
18878
                xor     ecx, ebx
18879
                and     edi, [esp+14h]
18880
                xor     ecx, edi
18881
                lea     ebp, [eax+ebp+34E90C6Ch]
18882
                ror     ecx, 7
18883
                add     ebp, ecx
18884
                mov     eax, [esp+0Ch]
18885
                mov     [esp+10h], ebp
18886
                mov     ebx, [esp+14h]
18887
                mov     edi, [esp+18h]
18888
                xor     ebp, 0FFFFFFFFh
18889
                mov     ecx, [esp]
18890
                and     ebx, edi
18891
                mov     edx, [esp+4]
18892
                and     ebp, ecx
18893
                xor     ebx, [esp+8]
18894
                xor     ebp, edx
18895
                xor     ecx, edi
18896
                xor     ebx, ebp
18897
                and     ecx, [esp+14h]
18898
                and     ebx, [esp+1Ch]
18899
                ror     eax, 0Bh
18900
                xor     ecx, edx
18901
                mov     ebp, [esi+2Ch]
18902
                xor     ecx, ebx
18903
                and     edi, [esp+10h]
18904
                xor     ecx, edi
18905
                lea     ebp, [eax+ebp-3F53D649h]
18906
                ror     ecx, 7
18907
                add     ebp, ecx
18908
                mov     eax, [esp+8]
18909
                mov     [esp+0Ch], ebp
18910
                mov     ebx, [esp+10h]
18911
                mov     edi, [esp+14h]
18912
                xor     ebp, 0FFFFFFFFh
18913
                mov     ecx, [esp+1Ch]
18914
                and     ebx, edi
18915
                mov     edx, [esp]
18916
                and     ebp, ecx
18917
                xor     ebx, [esp+4]
18918
                xor     ebp, edx
18919
                xor     ecx, edi
18920
                xor     ebx, ebp
18921
                and     ecx, [esp+10h]
18922
                and     ebx, [esp+18h]
18923
                ror     eax, 0Bh
18924
                xor     ecx, edx
18925
                mov     ebp, [esi+70h]
18926
                xor     ecx, ebx
18927
                and     edi, [esp+0Ch]
18928
                xor     ecx, edi
18929
                lea     ebp, [eax+ebp-3683AF23h]
18930
                ror     ecx, 7
18931
                add     ebp, ecx
18932
                mov     eax, [esp+4]
18933
                mov     [esp+8], ebp
18934
                mov     ebx, [esp+0Ch]
18935
                mov     edi, [esp+10h]
18936
                xor     ebp, 0FFFFFFFFh
18937
                mov     ecx, [esp+18h]
18938
                and     ebx, edi
18939
                mov     edx, [esp+1Ch]
18940
                and     ebp, ecx
18941
                xor     ebx, [esp]
18942
                xor     ebp, edx
18943
                xor     ecx, edi
18944
                xor     ebx, ebp
18945
                and     ecx, [esp+0Ch]
18946
                and     ebx, [esp+14h]
18947
                ror     eax, 0Bh
18948
                xor     ecx, edx
18949
                mov     ebp, [esi+1Ch]
18950
                xor     ecx, ebx
18951
                and     edi, [esp+8]
18952
                xor     ecx, edi
18953
                lea     ebp, [eax+ebp+3F84D5B5h]
18954
                ror     ecx, 7
18955
                add     ebp, ecx
18956
                mov     eax, [esp]
18957
                mov     [esp+4], ebp
18958
                mov     ebx, [esp+8]
18959
                mov     edi, [esp+0Ch]
18960
                xor     ebp, 0FFFFFFFFh
18961
                mov     ecx, [esp+14h]
18962
                and     ebx, edi
18963
                mov     edx, [esp+18h]
18964
                and     ebp, ecx
18965
                xor     ebx, [esp+1Ch]
18966
                xor     ebp, edx
18967
                xor     ecx, edi
18968
                xor     ebx, ebp
18969
                and     ecx, [esp+8]
18970
                and     ebx, [esp+10h]
18971
                ror     eax, 0Bh
18972
                xor     ecx, edx
18973
                mov     ebp, [esi+40h]
18974
                xor     ecx, ebx
18975
                and     edi, [esp+4]
18976
                xor     ecx, edi
18977
                lea     ebp, [eax+ebp-4AB8F6E9h]
18978
                ror     ecx, 7
18979
                add     ebp, ecx
18980
                mov     eax, [esp+1Ch]
18981
                mov     [esp], ebp
18982
                mov     ebx, [esp+4]
18983
                mov     edi, [esp+8]
18984
                xor     ebp, 0FFFFFFFFh
18985
                mov     ecx, [esp+10h]
18986
                and     ebx, edi
18987
                mov     edx, [esp+14h]
18988
                and     ebp, ecx
18989
                xor     ebx, [esp+18h]
18990
                xor     ebp, edx
18991
                xor     ecx, edi
18992
                xor     ebx, ebp
18993
                and     ecx, [esp+4]
18994
                and     ebx, [esp+0Ch]
18995
                ror     eax, 0Bh
18996
                xor     ecx, edx
18997
                mov     ebp, [esi]
18998
                xor     ecx, ebx
18999
                and     edi, [esp]
19000
                xor     ecx, edi
19001
                lea     ebp, [eax+ebp-6DE92A27h]
19002
                ror     ecx, 7
19003
                add     ebp, ecx
19004
                mov     eax, [esp+18h]
19005
                mov     [esp+1Ch], ebp
19006
                mov     ebx, [esp]
19007
                mov     edi, [esp+4]
19008
                xor     ebp, 0FFFFFFFFh
19009
                mov     ecx, [esp+0Ch]
19010
                and     ebx, edi
19011
                mov     edx, [esp+10h]
19012
                and     ebp, ecx
19013
                xor     ebx, [esp+14h]
19014
                xor     ebp, edx
19015
                xor     ecx, edi
19016
                xor     ebx, ebp
19017
                and     ecx, [esp]
19018
                and     ebx, [esp+8]
19019
                ror     eax, 0Bh
19020
                xor     ecx, edx
19021
                mov     ebp, [esi+5Ch]
19022
                xor     ecx, ebx
19023
                and     edi, [esp+1Ch]
19024
                xor     ecx, edi
19025
                lea     ebp, [eax+ebp-768604E5h]
19026
                ror     ecx, 7
19027
                add     ebp, ecx
19028
                mov     eax, [esp+14h]
19029
                mov     [esp+18h], ebp
19030
                mov     ebx, [esp+1Ch]
19031
                mov     edi, [esp]
19032
                xor     ebp, 0FFFFFFFFh
19033
                mov     ecx, [esp+8]
19034
                and     ebx, edi
19035
                mov     edx, [esp+0Ch]
19036
                and     ebp, ecx
19037
                xor     ebx, [esp+10h]
19038
                xor     ebp, edx
19039
                xor     ecx, edi
19040
                xor     ebx, ebp
19041
                and     ecx, [esp+1Ch]
19042
                and     ebx, [esp+4]
19043
                ror     eax, 0Bh
19044
                xor     ecx, edx
19045
                mov     ebp, [esi+50h]
19046
                xor     ecx, ebx
19047
                and     edi, [esp+18h]
19048
                xor     ecx, edi
19049
                lea     ebp, [eax+ebp-2ECEF45Ah]
19050
                ror     ecx, 7
19051
                add     ebp, ecx
19052
                mov     eax, [esp+10h]
19053
                mov     [esp+14h], ebp
19054
                mov     ebx, [esp+18h]
19055
                mov     edi, [esp+1Ch]
19056
                xor     ebp, 0FFFFFFFFh
19057
                mov     ecx, [esp+4]
19058
                and     ebx, edi
19059
                mov     edx, [esp+8]
19060
                and     ebp, ecx
19061
                xor     ebx, [esp+0Ch]
19062
                xor     ebp, edx
19063
                xor     ecx, edi
19064
                xor     ebx, ebp
19065
                and     ecx, [esp+18h]
19066
                and     ebx, [esp]
19067
                ror     eax, 0Bh
19068
                xor     ecx, edx
19069
                mov     ebp, [esi+58h]
19070
                xor     ecx, ebx
19071
                and     edi, [esp+14h]
19072
                xor     ecx, edi
19073
                lea     ebp, [eax+ebp-67204A54h]
19074
                ror     ecx, 7
19075
                add     ebp, ecx
19076
                mov     eax, [esp+0Ch]
19077
                mov     [esp+10h], ebp
19078
                mov     ebx, [esp+14h]
19079
                mov     edi, [esp+18h]
19080
                xor     ebp, 0FFFFFFFFh
19081
                mov     ecx, [esp]
19082
                and     ebx, edi
19083
                mov     edx, [esp+4]
19084
                and     ebp, ecx
19085
                xor     ebx, [esp+8]
19086
                xor     ebp, edx
19087
                xor     ecx, edi
19088
                xor     ebx, ebp
19089
                and     ecx, [esp+14h]
19090
                and     ebx, [esp+1Ch]
19091
                ror     eax, 0Bh
19092
                xor     ecx, edx
19093
                mov     ebp, [esi+4]
19094
                xor     ecx, ebx
19095
                and     edi, [esp+10h]
19096
                xor     ecx, edi
19097
                lea     ebp, [eax+ebp+2FFD72DBh]
19098
                ror     ecx, 7
19099
                add     ebp, ecx
19100
                mov     eax, [esp+8]
19101
                mov     [esp+0Ch], ebp
19102
                mov     ebx, [esp+10h]
19103
                mov     edi, [esp+14h]
19104
                xor     ebp, 0FFFFFFFFh
19105
                mov     ecx, [esp+1Ch]
19106
                and     ebx, edi
19107
                mov     edx, [esp]
19108
                and     ebp, ecx
19109
                xor     ebx, [esp+4]
19110
                xor     ebp, edx
19111
                xor     ecx, edi
19112
                xor     ebx, ebp
19113
                and     ecx, [esp+10h]
19114
                and     ebx, [esp+18h]
19115
                ror     eax, 0Bh
19116
                xor     ecx, edx
19117
                mov     ebp, [esi+28h]
19118
                xor     ecx, ebx
19119
                and     edi, [esp+0Ch]
19120
                xor     ecx, edi
19121
                lea     ebp, [eax+ebp-2FE52049h]
19122
                ror     ecx, 7
19123
                add     ebp, ecx
19124
                mov     eax, [esp+4]
19125
                mov     [esp+8], ebp
19126
                mov     ebx, [esp+0Ch]
19127
                mov     edi, [esp+10h]
19128
                xor     ebp, 0FFFFFFFFh
19129
                mov     ecx, [esp+18h]
19130
                and     ebx, edi
19131
                mov     edx, [esp+1Ch]
19132
                and     ebp, ecx
19133
                xor     ebx, [esp]
19134
                xor     ebp, edx
19135
                xor     ecx, edi
19136
                xor     ebx, ebp
19137
                and     ecx, [esp+0Ch]
19138
                and     ebx, [esp+14h]
19139
                ror     eax, 0Bh
19140
                xor     ecx, edx
19141
                mov     ebp, [esi+10h]
19142
                xor     ecx, ebx
19143
                and     edi, [esp+8]
19144
                xor     ecx, edi
19145
                lea     ebp, [eax+ebp-471E5013h]
19146
                ror     ecx, 7
19147
                add     ebp, ecx
19148
                mov     eax, [esp]
19149
                mov     [esp+4], ebp
19150
                mov     ebx, [esp+8]
19151
                mov     edi, [esp+0Ch]
19152
                xor     ebp, 0FFFFFFFFh
19153
                mov     ecx, [esp+14h]
19154
                and     ebx, edi
19155
                mov     edx, [esp+18h]
19156
                and     ebp, ecx
19157
                xor     ebx, [esp+1Ch]
19158
                xor     ebp, edx
19159
                xor     ecx, edi
19160
                xor     ebx, ebp
19161
                and     ecx, [esp+8]
19162
                and     ebx, [esp+10h]
19163
                ror     eax, 0Bh
19164
                xor     ecx, edx
19165
                mov     ebp, [esi+20h]
19166
                xor     ecx, ebx
19167
                and     edi, [esp+4]
19168
                xor     ecx, edi
19169
                lea     ebp, [eax+ebp+6A267E96h]
19170
                ror     ecx, 7
19171
                add     ebp, ecx
19172
                mov     eax, [esp+1Ch]
19173
                mov     [esp], ebp
19174
                mov     ebx, [esp+4]
19175
                mov     edi, [esp+8]
19176
                xor     ebp, 0FFFFFFFFh
19177
                mov     ecx, [esp+10h]
19178
                and     ebx, edi
19179
                mov     edx, [esp+14h]
19180
                and     ebp, ecx
19181
                xor     ebx, [esp+18h]
19182
                xor     ebp, edx
19183
                xor     ecx, edi
19184
                xor     ebx, ebp
19185
                and     ecx, [esp+4]
19186
                and     ebx, [esp+0Ch]
19187
                ror     eax, 0Bh
19188
                xor     ecx, edx
19189
                mov     ebp, [esi+78h]
19190
                xor     ecx, ebx
19191
                and     edi, [esp]
19192
                xor     ecx, edi
19193
                lea     ebp, [eax+ebp-45836FBBh]
19194
                ror     ecx, 7
19195
                add     ebp, ecx
19196
                mov     eax, [esp+18h]
19197
                mov     [esp+1Ch], ebp
19198
                mov     ebx, [esp]
19199
                mov     edi, [esp+4]
19200
                xor     ebp, 0FFFFFFFFh
19201
                mov     ecx, [esp+0Ch]
19202
                and     ebx, edi
19203
                mov     edx, [esp+10h]
19204
                and     ebp, ecx
19205
                xor     ebx, [esp+14h]
19206
                xor     ebp, edx
19207
                xor     ecx, edi
19208
                xor     ebx, ebp
19209
                and     ecx, [esp]
19210
                and     ebx, [esp+8]
19211
                ror     eax, 0Bh
19212
                xor     ecx, edx
19213
                mov     ebp, [esi+0Ch]
19214
                xor     ecx, ebx
19215
                and     edi, [esp+1Ch]
19216
                xor     ecx, edi
19217
                lea     ebp, [eax+ebp-0ED38067h]
19218
                ror     ecx, 7
19219
                add     ebp, ecx
19220
                mov     eax, [esp+14h]
19221
                mov     [esp+18h], ebp
19222
                mov     ebx, [esp+1Ch]
19223
                mov     edi, [esp]
19224
                xor     ebp, 0FFFFFFFFh
19225
                mov     ecx, [esp+8]
19226
                and     ebx, edi
19227
                mov     edx, [esp+0Ch]
19228
                and     ebp, ecx
19229
                xor     ebx, [esp+10h]
19230
                xor     ebp, edx
19231
                xor     ecx, edi
19232
                xor     ebx, ebp
19233
                and     ecx, [esp+1Ch]
19234
                and     ebx, [esp+4]
19235
                ror     eax, 0Bh
19236
                xor     ecx, edx
19237
                mov     ebp, [esi+54h]
19238
                xor     ecx, ebx
19239
                and     edi, [esp+18h]
19240
                xor     ecx, edi
19241
                lea     ebp, [eax+ebp+24A19947h]
19242
                ror     ecx, 7
19243
                add     ebp, ecx
19244
                mov     eax, [esp+10h]
19245
                mov     [esp+14h], ebp
19246
                mov     ebx, [esp+18h]
19247
                mov     edi, [esp+1Ch]
19248
                xor     ebp, 0FFFFFFFFh
19249
                mov     ecx, [esp+4]
19250
                and     ebx, edi
19251
                mov     edx, [esp+8]
19252
                and     ebp, ecx
19253
                xor     ebx, [esp+0Ch]
19254
                xor     ebp, edx
19255
                xor     ecx, edi
19256
                xor     ebx, ebp
19257
                and     ecx, [esp+18h]
19258
                and     ebx, [esp]
19259
                ror     eax, 0Bh
19260
                xor     ecx, edx
19261
                mov     ebp, [esi+24h]
19262
                xor     ecx, ebx
19263
                and     edi, [esp+14h]
19264
                xor     ecx, edi
19265
                lea     ebp, [eax+ebp-4C6E9309h]
19266
                ror     ecx, 7
19267
                add     ebp, ecx
19268
                mov     eax, [esp+0Ch]
19269
                mov     [esp+10h], ebp
19270
                mov     ebx, [esp+14h]
19271
                mov     edi, [esp+18h]
19272
                xor     ebp, 0FFFFFFFFh
19273
                mov     ecx, [esp]
19274
                and     ebx, edi
19275
                mov     edx, [esp+4]
19276
                and     ebp, ecx
19277
                xor     ebx, [esp+8]
19278
                xor     ebp, edx
19279
                xor     ecx, edi
19280
                xor     ebx, ebp
19281
                and     ecx, [esp+14h]
19282
                and     ebx, [esp+1Ch]
19283
                ror     eax, 0Bh
19284
                xor     ecx, edx
19285
                mov     ebp, [esi+44h]
19286
                xor     ecx, ebx
19287
                and     edi, [esp+10h]
19288
                xor     ecx, edi
19289
                lea     ebp, [eax+ebp+801F2E2h]
19290
                ror     ecx, 7
19291
                add     ebp, ecx
19292
                mov     eax, [esp+8]
19293
                mov     [esp+0Ch], ebp
19294
                mov     ebx, [esp+10h]
19295
                mov     edi, [esp+14h]
19296
                xor     ebp, 0FFFFFFFFh
19297
                mov     ecx, [esp+1Ch]
19298
                and     ebx, edi
19299
                mov     edx, [esp]
19300
                and     ebp, ecx
19301
                xor     ebx, [esp+4]
19302
                xor     ebp, edx
19303
                xor     ecx, edi
19304
                xor     ebx, ebp
19305
                and     ecx, [esp+10h]
19306
                and     ebx, [esp+18h]
19307
                ror     eax, 0Bh
19308
                xor     ecx, edx
19309
                mov     ebp, [esi+60h]
19310
                xor     ecx, ebx
19311
                and     edi, [esp+0Ch]
19312
                xor     ecx, edi
19313
                lea     ebp, [eax+ebp-7A7103EAh]
19314
                ror     ecx, 7
19315
                add     ebp, ecx
19316
                mov     eax, [esp+4]
19317
                mov     [esp+8], ebp
19318
                mov     ebx, [esp+0Ch]
19319
                mov     edi, [esp+10h]
19320
                xor     ebp, 0FFFFFFFFh
19321
                mov     ecx, [esp+18h]
19322
                and     ebx, edi
19323
                mov     edx, [esp+1Ch]
19324
                and     ebp, ecx
19325
                xor     ebx, [esp]
19326
                xor     ebp, edx
19327
                xor     ecx, edi
19328
                xor     ebx, ebp
19329
                and     ecx, [esp+0Ch]
19330
                and     ebx, [esp+14h]
19331
                ror     eax, 0Bh
19332
                xor     ecx, edx
19333
                mov     ebp, [esi+74h]
19334
                xor     ecx, ebx
19335
                and     edi, [esp+8]
19336
                xor     ecx, edi
19337
                lea     ebp, [eax+ebp+636920D8h]
19338
                ror     ecx, 7
19339
                add     ebp, ecx
19340
                mov     eax, [esp]
19341
                mov     [esp+4], ebp
19342
                mov     ebx, [esp+8]
19343
                mov     edi, [esp+0Ch]
19344
                xor     ebp, 0FFFFFFFFh
19345
                mov     ecx, [esp+14h]
19346
                and     ebx, edi
19347
                mov     edx, [esp+18h]
19348
                and     ebp, ecx
19349
                xor     ebx, [esp+1Ch]
19350
                xor     ebp, edx
19351
                xor     ecx, edi
19352
                xor     ebx, ebp
19353
                and     ecx, [esp+8]
19354
                and     ebx, [esp+10h]
19355
                ror     eax, 0Bh
19356
                xor     ecx, edx
19357
                mov     ebp, [esi+18h]
19358
                xor     ecx, ebx
19359
                and     edi, [esp+4]
19360
                xor     ecx, edi
19361
                lea     ebp, [eax+ebp+71574E69h]
19362
                ror     ecx, 7
19363
                add     ebp, ecx
19364
                mov     eax, [esp+1Ch]
19365
                mov     [esp], ebp
19366
                mov     ebx, [esp+4]
19367
                mov     edi, [esp+8]
19368
                xor     ebp, 0FFFFFFFFh
19369
                mov     ecx, [esp+10h]
19370
                and     ebx, edi
19371
                mov     edx, [esp+14h]
19372
                and     ebp, ecx
19373
                xor     ebx, [esp+18h]
19374
                xor     ebp, edx
19375
                xor     ecx, edi
19376
                xor     ebx, ebp
19377
                and     ecx, [esp+4]
19378
                and     ebx, [esp+0Ch]
19379
                ror     eax, 0Bh
19380
                xor     ecx, edx
19381
                mov     ebp, [esi+4Ch]
19382
                xor     ecx, ebx
19383
                and     edi, [esp]
19384
                xor     ecx, edi
19385
                lea     ebp, [eax+ebp-5BA7015Dh]
19386
                ror     ecx, 7
19387
                add     ebp, ecx
19388
                mov     eax, [esp+18h]
19389
                mov     [esp+1Ch], ebp
19390
                mov     ebx, [esp]
19391
                mov     edi, [esp+4]
19392
                xor     ebp, 0FFFFFFFFh
19393
                mov     ecx, [esp+0Ch]
19394
                and     ebx, edi
19395
                mov     edx, [esp+10h]
19396
                and     ebp, ecx
19397
                xor     ebx, [esp+14h]
19398
                xor     ebp, edx
19399
                xor     ecx, edi
19400
                xor     ebx, ebp
19401
                and     ecx, [esp]
19402
                and     ebx, [esp+8]
19403
                ror     eax, 0Bh
19404
                xor     ecx, edx
19405
                mov     ebp, [esi+30h]
19406
                xor     ecx, ebx
19407
                and     edi, [esp+1Ch]
19408
                xor     ecx, edi
19409
                lea     ebp, [eax+ebp-0B6CC282h]
19410
                ror     ecx, 7
19411
                add     ebp, ecx
19412
                mov     eax, [esp+14h]
19413
                mov     [esp+18h], ebp
19414
                mov     ebx, [esp+1Ch]
19415
                mov     edi, [esp]
19416
                xor     ebp, 0FFFFFFFFh
19417
                mov     ecx, [esp+8]
19418
                and     ebx, edi
19419
                mov     edx, [esp+0Ch]
19420
                and     ebp, ecx
19421
                xor     ebx, [esp+10h]
19422
                xor     ebp, edx
19423
                xor     ecx, edi
19424
                xor     ebx, ebp
19425
                and     ecx, [esp+1Ch]
19426
                and     ebx, [esp+4]
19427
                ror     eax, 0Bh
19428
                xor     ecx, edx
19429
                mov     ebp, [esi+3Ch]
19430
                xor     ecx, ebx
19431
                and     edi, [esp+18h]
19432
                xor     ecx, edi
19433
                lea     ebp, [eax+ebp+0D95748Fh]
19434
                ror     ecx, 7
19435
                add     ebp, ecx
19436
                mov     eax, [esp+10h]
19437
                mov     [esp+14h], ebp
19438
                mov     ebx, [esp+18h]
19439
                mov     edi, [esp+1Ch]
19440
                xor     ebp, 0FFFFFFFFh
19441
                mov     ecx, [esp+4]
19442
                and     ebx, edi
19443
                mov     edx, [esp+8]
19444
                and     ebp, ecx
19445
                xor     ebx, [esp+0Ch]
19446
                xor     ebp, edx
19447
                xor     ecx, edi
19448
                xor     ebx, ebp
19449
                and     ecx, [esp+18h]
19450
                and     ebx, [esp]
19451
                ror     eax, 0Bh
19452
                xor     ecx, edx
19453
                mov     ebp, [esi+34h]
19454
                xor     ecx, ebx
19455
                and     edi, [esp+14h]
19456
                xor     ecx, edi
19457
                lea     ebp, [eax+ebp+728EB658h]
19458
                ror     ecx, 7
19459
                add     ebp, ecx
19460
                mov     eax, [esp+0Ch]
19461
                mov     [esp+10h], ebp
19462
                mov     ebx, [esp+14h]
19463
                mov     edi, [esp+18h]
19464
                xor     ebp, 0FFFFFFFFh
19465
                mov     ecx, [esp]
19466
                and     ebx, edi
19467
                mov     edx, [esp+4]
19468
                and     ebp, ecx
19469
                xor     ebx, [esp+8]
19470
                xor     ebp, edx
19471
                xor     ecx, edi
19472
                xor     ebx, ebp
19473
                and     ecx, [esp+14h]
19474
                and     ebx, [esp+1Ch]
19475
                ror     eax, 0Bh
19476
                xor     ecx, edx
19477
                mov     ebp, [esi+8]
19478
                xor     ecx, ebx
19479
                and     edi, [esp+10h]
19480
                xor     ecx, edi
19481
                lea     ebp, [eax+ebp+718BCD58h]
19482
                ror     ecx, 7
19483
                add     ebp, ecx
19484
                mov     eax, [esp+8]
19485
                mov     [esp+0Ch], ebp
19486
                mov     ebx, [esp+10h]
19487
                mov     edi, [esp+14h]
19488
                xor     ebp, 0FFFFFFFFh
19489
                mov     ecx, [esp+1Ch]
19490
                and     ebx, edi
19491
                mov     edx, [esp]
19492
                and     ebp, ecx
19493
                xor     ebx, [esp+4]
19494
                xor     ebp, edx
19495
                xor     ecx, edi
19496
                xor     ebx, ebp
19497
                and     ecx, [esp+10h]
19498
                and     ebx, [esp+18h]
19499
                ror     eax, 0Bh
19500
                xor     ecx, edx
19501
                mov     ebp, [esi+64h]
19502
                xor     ecx, ebx
19503
                and     edi, [esp+0Ch]
19504
                xor     ecx, edi
19505
                lea     ebp, [eax+ebp-7DEAB512h]
19506
                ror     ecx, 7
19507
                add     ebp, ecx
19508
                mov     eax, [esp+4]
19509
                mov     [esp+8], ebp
19510
                mov     ebx, [esp+0Ch]
19511
                mov     edi, [esp+10h]
19512
                xor     ebp, 0FFFFFFFFh
19513
                mov     ecx, [esp+18h]
19514
                and     ebx, edi
19515
                mov     edx, [esp+1Ch]
19516
                and     ebp, ecx
19517
                xor     ebx, [esp]
19518
                xor     ebp, edx
19519
                xor     ecx, edi
19520
                xor     ebx, ebp
19521
                and     ecx, [esp+0Ch]
19522
                and     ebx, [esp+14h]
19523
                ror     eax, 0Bh
19524
                xor     ecx, edx
19525
                mov     ebp, [esi+7Ch]
19526
                xor     ecx, ebx
19527
                and     edi, [esp+8]
19528
                xor     ecx, edi
19529
                lea     ebp, [eax+ebp+7B54A41Dh]
19530
                ror     ecx, 7
19531
                add     ebp, ecx
19532
                mov     eax, [esp]
19533
                mov     [esp+4], ebp
19534
                mov     ebx, [esp+8]
19535
                mov     edi, [esp+0Ch]
19536
                xor     ebp, 0FFFFFFFFh
19537
                mov     ecx, [esp+14h]
19538
                and     ebx, edi
19539
                mov     edx, [esp+18h]
19540
                and     ebp, ecx
19541
                xor     ebx, [esp+1Ch]
19542
                xor     ebp, edx
19543
                xor     ecx, edi
19544
                xor     ebx, ebp
19545
                and     ecx, [esp+8]
19546
                and     ebx, [esp+10h]
19547
                ror     eax, 0Bh
19548
                xor     ecx, edx
19549
                mov     ebp, [esi+6Ch]
19550
                xor     ecx, ebx
19551
                and     edi, [esp+4]
19552
                xor     ecx, edi
19553
                lea     ebp, [eax+ebp-3DA5A64Bh]
19554
                ror     ecx, 7
19555
                add     ebp, ecx
19556
                mov     eax, [esp+1Ch]
19557
                mov     [esp], ebp
19558
                mov     ebp, [esp+14h]
19559
                mov     ebx, [esp+0Ch]
19560
                mov     ecx, [esp+4]
19561
                mov     edi, ebx
19562
                and     ebx, [esp+18h]
19563
                and     edi, ecx
19564
                xor     ebx, ebp
19565
                ror     eax, 0Bh
19566
                xor     edi, ebp
19567
                mov     ebp, [esi+4Ch]
19568
                xor     edi, [esp+8]
19569
                and     ecx, [esp]
19570
                and     edi, [esp+10h]
19571
                xor     ecx, ebx
19572
                lea     ebp, [eax+ebp-63CF2AC7h]
19573
                xor     ecx, edi
19574
                ror     ecx, 7
19575
                add     ebp, ecx
19576
                mov     eax, [esp+18h]
19577
                mov     [esp+1Ch], ebp
19578
                mov     ebp, [esp+10h]
19579
                mov     ebx, [esp+8]
19580
                mov     ecx, [esp]
19581
                mov     edi, ebx
19582
                and     ebx, [esp+14h]
19583
                and     edi, ecx
19584
                xor     ebx, ebp
19585
                ror     eax, 0Bh
19586
                xor     edi, ebp
19587
                mov     ebp, [esi+24h]
19588
                xor     edi, [esp+4]
19589
                and     ecx, [esp+1Ch]
19590
                and     edi, [esp+0Ch]
19591
                xor     ecx, ebx
19592
                lea     ebp, [eax+ebp+2AF26013h]
19593
                xor     ecx, edi
19594
                ror     ecx, 7
19595
                add     ebp, ecx
19596
                mov     eax, [esp+14h]
19597
                mov     [esp+18h], ebp
19598
                mov     ebp, [esp+0Ch]
19599
                mov     ebx, [esp+4]
19600
                mov     ecx, [esp+1Ch]
19601
                mov     edi, ebx
19602
                and     ebx, [esp+10h]
19603
                and     edi, ecx
19604
                xor     ebx, ebp
19605
                ror     eax, 0Bh
19606
                xor     edi, ebp
19607
                mov     ebp, [esi+10h]
19608
                xor     edi, [esp]
19609
                and     ecx, [esp+18h]
19610
                and     edi, [esp+8]
19611
                xor     ecx, ebx
19612
                lea     ebp, [eax+ebp-3A2E4FDDh]
19613
                xor     ecx, edi
19614
                ror     ecx, 7
19615
                add     ebp, ecx
19616
                mov     eax, [esp+10h]
19617
                mov     [esp+14h], ebp
19618
                mov     ebp, [esp+8]
19619
                mov     ebx, [esp]
19620
                mov     ecx, [esp+18h]
19621
                mov     edi, ebx
19622
                and     ebx, [esp+0Ch]
19623
                and     edi, ecx
19624
                xor     ebx, ebp
19625
                ror     eax, 0Bh
19626
                xor     edi, ebp
19627
                mov     ebp, [esi+50h]
19628
                xor     edi, [esp+1Ch]
19629
                and     ecx, [esp+14h]
19630
                and     edi, [esp+4]
19631
                xor     ecx, ebx
19632
                lea     ebp, [eax+ebp+286085F0h]
19633
                xor     ecx, edi
19634
                ror     ecx, 7
19635
                add     ebp, ecx
19636
                mov     eax, [esp+0Ch]
19637
                mov     [esp+10h], ebp
19638
                mov     ebp, [esp+4]
19639
                mov     ebx, [esp+1Ch]
19640
                mov     ecx, [esp+14h]
19641
                mov     edi, ebx
19642
                and     ebx, [esp+8]
19643
                and     edi, ecx
19644
                xor     ebx, ebp
19645
                ror     eax, 0Bh
19646
                xor     edi, ebp
19647
                mov     ebp, [esi+70h]
19648
                xor     edi, [esp+18h]
19649
                and     ecx, [esp+10h]
19650
                and     edi, [esp]
19651
                xor     ecx, ebx
19652
                lea     ebp, [eax+ebp-35BE86E8h]
19653
                xor     ecx, edi
19654
                ror     ecx, 7
19655
                add     ebp, ecx
19656
                mov     eax, [esp+8]
19657
                mov     [esp+0Ch], ebp
19658
                mov     ebp, [esp]
19659
                mov     ebx, [esp+18h]
19660
                mov     ecx, [esp+10h]
19661
                mov     edi, ebx
19662
                and     ebx, [esp+4]
19663
                and     edi, ecx
19664
                xor     ebx, ebp
19665
                ror     eax, 0Bh
19666
                xor     edi, ebp
19667
                mov     ebp, [esi+44h]
19668
                xor     edi, [esp+14h]
19669
                and     ecx, [esp+0Ch]
19670
                and     edi, [esp+1Ch]
19671
                xor     ecx, ebx
19672
                lea     ebp, [eax+ebp-4724C711h]
19673
                xor     ecx, edi
19674
                ror     ecx, 7
19675
                add     ebp, ecx
19676
                mov     eax, [esp+4]
19677
                mov     [esp+8], ebp
19678
                mov     ebp, [esp+1Ch]
19679
                mov     ebx, [esp+14h]
19680
                mov     ecx, [esp+0Ch]
19681
                mov     edi, ebx
19682
                and     ebx, [esp]
19683
                and     edi, ecx
19684
                xor     ebx, ebp
19685
                ror     eax, 0Bh
19686
                xor     edi, ebp
19687
                mov     ebp, [esi+20h]
19688
                xor     edi, [esp+10h]
19689
                and     ecx, [esp+8]
19690
                and     edi, [esp+18h]
19691
                xor     ecx, ebx
19692
                lea     ebp, [eax+ebp-71862350h]
19693
                xor     ecx, edi
19694
                ror     ecx, 7
19695
                add     ebp, ecx
19696
                mov     eax, [esp]
19697
                mov     [esp+4], ebp
19698
                mov     ebp, [esp+18h]
19699
                mov     ebx, [esp+10h]
19700
                mov     ecx, [esp+8]
19701
                mov     edi, ebx
19702
                and     ebx, [esp+1Ch]
19703
                and     edi, ecx
19704
                xor     ebx, ebp
19705
                ror     eax, 0Bh
19706
                xor     edi, ebp
19707
                mov     ebp, [esi+58h]
19708
                xor     edi, [esp+0Ch]
19709
                and     ecx, [esp+4]
19710
                and     edi, [esp+14h]
19711
                xor     ecx, ebx
19712
                lea     ebp, [eax+ebp+603A180Eh]
19713
                xor     ecx, edi
19714
                ror     ecx, 7
19715
                add     ebp, ecx
19716
                mov     eax, [esp+1Ch]
19717
                mov     [esp], ebp
19718
                mov     ebp, [esp+14h]
19719
                mov     ebx, [esp+0Ch]
19720
                mov     ecx, [esp+4]
19721
                mov     edi, ebx
19722
                and     ebx, [esp+18h]
19723
                and     edi, ecx
19724
                xor     ebx, ebp
19725
                ror     eax, 0Bh
19726
                xor     edi, ebp
19727
                mov     ebp, [esi+74h]
19728
                xor     edi, [esp+8]
19729
                and     ecx, [esp]
19730
                and     edi, [esp+10h]
19731
                xor     ecx, ebx
19732
                lea     ebp, [eax+ebp+6C9E0E8Bh]
19733
                xor     ecx, edi
19734
                ror     ecx, 7
19735
                add     ebp, ecx
19736
                mov     eax, [esp+18h]
19737
                mov     [esp+1Ch], ebp
19738
                mov     ebp, [esp+10h]
19739
                mov     ebx, [esp+8]
19740
                mov     ecx, [esp]
19741
                mov     edi, ebx
19742
                and     ebx, [esp+14h]
19743
                and     edi, ecx
19744
                xor     ebx, ebp
19745
                ror     eax, 0Bh
19746
                xor     edi, ebp
19747
                mov     ebp, [esi+38h]
19748
                xor     edi, [esp+4]
19749
                and     ecx, [esp+1Ch]
19750
                and     edi, [esp+0Ch]
19751
                xor     ecx, ebx
19752
                lea     ebp, [eax+ebp-4FE175C2h]
19753
                xor     ecx, edi
19754
                ror     ecx, 7
19755
                add     ebp, ecx
19756
                mov     eax, [esp+14h]
19757
                mov     [esp+18h], ebp
19758
                mov     ebp, [esp+0Ch]
19759
                mov     ebx, [esp+4]
19760
                mov     ecx, [esp+1Ch]
19761
                mov     edi, ebx
19762
                and     ebx, [esp+10h]
19763
                and     edi, ecx
19764
                xor     ebx, ebp
19765
                ror     eax, 0Bh
19766
                xor     edi, ebp
19767
                mov     ebp, [esi+64h]
19768
                xor     edi, [esp]
19769
                and     ecx, [esp+18h]
19770
                and     edi, [esp+8]
19771
                xor     ecx, ebx
19772
                lea     ebp, [eax+ebp-28EA883Fh]
19773
                xor     ecx, edi
19774
                ror     ecx, 7
19775
                add     ebp, ecx
19776
                mov     eax, [esp+10h]
19777
                mov     [esp+14h], ebp
19778
                mov     ebp, [esp+8]
19779
                mov     ebx, [esp]
19780
                mov     ecx, [esp+18h]
19781
                mov     edi, ebx
19782
                and     ebx, [esp+0Ch]
19783
                and     edi, ecx
19784
                xor     ebx, ebp
19785
                ror     eax, 0Bh
19786
                xor     edi, ebp
19787
                mov     ebp, [esi+30h]
19788
                xor     edi, [esp+1Ch]
19789
                and     ecx, [esp+14h]
19790
                and     edi, [esp+4]
19791
                xor     ecx, ebx
19792
                lea     ebp, [eax+ebp-42CEB4D9h]
19793
                xor     ecx, edi
19794
                ror     ecx, 7
19795
                add     ebp, ecx
19796
                mov     eax, [esp+0Ch]
19797
                mov     [esp+10h], ebp
19798
                mov     ebp, [esp+4]
19799
                mov     ebx, [esp+1Ch]
19800
                mov     ecx, [esp+14h]
19801
                mov     edi, ebx
19802
                and     ebx, [esp+8]
19803
                and     edi, ecx
19804
                xor     ebx, ebp
19805
                ror     eax, 0Bh
19806
                xor     edi, ebp
19807
                mov     ebp, [esi+60h]
19808
                xor     edi, [esp+18h]
19809
                and     ecx, [esp+10h]
19810
                and     edi, [esp]
19811
                xor     ecx, ebx
19812
                lea     ebp, [eax+ebp+78AF2FDAh]
19813
                xor     ecx, edi
19814
                ror     ecx, 7
19815
                add     ebp, ecx
19816
                mov     eax, [esp+8]
19817
                mov     [esp+0Ch], ebp
19818
                mov     ebp, [esp]
19819
                mov     ebx, [esp+18h]
19820
                mov     ecx, [esp+10h]
19821
                mov     edi, ebx
19822
                and     ebx, [esp+4]
19823
                and     edi, ecx
19824
                xor     ebx, ebp
19825
                ror     eax, 0Bh
19826
                xor     edi, ebp
19827
                mov     ebp, [esi+78h]
19828
                xor     edi, [esp+14h]
19829
                and     ecx, [esp+0Ch]
19830
                and     edi, [esp+1Ch]
19831
                xor     ecx, ebx
19832
                lea     ebp, [eax+ebp+55605C60h]
19833
                xor     ecx, edi
19834
                ror     ecx, 7
19835
                add     ebp, ecx
19836
                mov     eax, [esp+4]
19837
                mov     [esp+8], ebp
19838
                mov     ebp, [esp+1Ch]
19839
                mov     ebx, [esp+14h]
19840
                mov     ecx, [esp+0Ch]
19841
                mov     edi, ebx
19842
                and     ebx, [esp]
19843
                and     edi, ecx
19844
                xor     ebx, ebp
19845
                ror     eax, 0Bh
19846
                xor     edi, ebp
19847
                mov     ebp, [esi+40h]
19848
                xor     edi, [esp+10h]
19849
                and     ecx, [esp+8]
19850
                and     edi, [esp+18h]
19851
                xor     ecx, ebx
19852
                lea     ebp, [eax+ebp-19AADA0Dh]
19853
                xor     ecx, edi
19854
                ror     ecx, 7
19855
                add     ebp, ecx
19856
                mov     eax, [esp]
19857
                mov     [esp+4], ebp
19858
                mov     ebp, [esp+18h]
19859
                mov     ebx, [esp+10h]
19860
                mov     ecx, [esp+8]
19861
                mov     edi, ebx
19862
                and     ebx, [esp+1Ch]
19863
                and     edi, ecx
19864
                xor     ebx, ebp
19865
                ror     eax, 0Bh
19866
                xor     edi, ebp
19867
                mov     ebp, [esi+68h]
19868
                xor     edi, [esp+0Ch]
19869
                and     ecx, [esp+4]
19870
                and     edi, [esp+14h]
19871
                xor     ecx, ebx
19872
                lea     ebp, [eax+ebp-55AA546Ch]
19873
                xor     ecx, edi
19874
                ror     ecx, 7
19875
                add     ebp, ecx
19876
                mov     eax, [esp+1Ch]
19877
                mov     [esp], ebp
19878
                mov     ebp, [esp+14h]
19879
                mov     ebx, [esp+0Ch]
19880
                mov     ecx, [esp+4]
19881
                mov     edi, ebx
19882
                and     ebx, [esp+18h]
19883
                and     edi, ecx
19884
                xor     ebx, ebp
19885
                ror     eax, 0Bh
19886
                xor     edi, ebp
19887
                mov     ebp, [esi+7Ch]
19888
                xor     edi, [esp+8]
19889
                and     ecx, [esp]
19890
                and     edi, [esp+10h]
19891
                xor     ecx, ebx
19892
                lea     ebp, [eax+ebp+57489862h]
19893
                xor     ecx, edi
19894
                ror     ecx, 7
19895
                add     ebp, ecx
19896
                mov     eax, [esp+18h]
19897
                mov     [esp+1Ch], ebp
19898
                mov     ebp, [esp+10h]
19899
                mov     ebx, [esp+8]
19900
                mov     ecx, [esp]
19901
                mov     edi, ebx
19902
                and     ebx, [esp+14h]
19903
                and     edi, ecx
19904
                xor     ebx, ebp
19905
                ror     eax, 0Bh
19906
                xor     edi, ebp
19907
                mov     ebp, [esi+3Ch]
19908
                xor     edi, [esp+4]
19909
                and     ecx, [esp+1Ch]
19910
                and     edi, [esp+0Ch]
19911
                xor     ecx, ebx
19912
                lea     ebp, [eax+ebp+63E81440h]
19913
                xor     ecx, edi
19914
                ror     ecx, 7
19915
                add     ebp, ecx
19916
                mov     eax, [esp+14h]
19917
                mov     [esp+18h], ebp
19918
                mov     ebp, [esp+0Ch]
19919
                mov     ebx, [esp+4]
19920
                mov     ecx, [esp+1Ch]
19921
                mov     edi, ebx
19922
                and     ebx, [esp+10h]
19923
                and     edi, ecx
19924
                xor     ebx, ebp
19925
                ror     eax, 0Bh
19926
                xor     edi, ebp
19927
                mov     ebp, [esi+1Ch]
19928
                xor     edi, [esp]
19929
                and     ecx, [esp+18h]
19930
                and     edi, [esp+8]
19931
                xor     ecx, ebx
19932
                lea     ebp, [eax+ebp+55CA396Ah]
19933
                xor     ecx, edi
19934
                ror     ecx, 7
19935
                add     ebp, ecx
19936
                mov     eax, [esp+10h]
19937
                mov     [esp+14h], ebp
19938
                mov     ebp, [esp+8]
19939
                mov     ebx, [esp]
19940
                mov     ecx, [esp+18h]
19941
                mov     edi, ebx
19942
                and     ebx, [esp+0Ch]
19943
                and     edi, ecx
19944
                xor     ebx, ebp
19945
                ror     eax, 0Bh
19946
                xor     edi, ebp
19947
                mov     ebp, [esi+0Ch]
19948
                xor     edi, [esp+1Ch]
19949
                and     ecx, [esp+14h]
19950
                and     edi, [esp+4]
19951
                xor     ecx, ebx
19952
                lea     ebp, [eax+ebp+2AAB10B6h]
19953
                xor     ecx, edi
19954
                ror     ecx, 7
19955
                add     ebp, ecx
19956
                mov     eax, [esp+0Ch]
19957
                mov     [esp+10h], ebp
19958
                mov     ebp, [esp+4]
19959
                mov     ebx, [esp+1Ch]
19960
                mov     ecx, [esp+14h]
19961
                mov     edi, ebx
19962
                and     ebx, [esp+8]
19963
                and     edi, ecx
19964
                xor     ebx, ebp
19965
                ror     eax, 0Bh
19966
                xor     edi, ebp
19967
                mov     ebp, [esi+4]
19968
                xor     edi, [esp+18h]
19969
                and     ecx, [esp+10h]
19970
                and     edi, [esp]
19971
                xor     ecx, ebx
19972
                lea     ebp, [eax+ebp-4B33A3CCh]
19973
                xor     ecx, edi
19974
                ror     ecx, 7
19975
                add     ebp, ecx
19976
                mov     eax, [esp+8]
19977
                mov     [esp+0Ch], ebp
19978
                mov     ebp, [esp]
19979
                mov     ebx, [esp+18h]
19980
                mov     ecx, [esp+10h]
19981
                mov     edi, ebx
19982
                and     ebx, [esp+4]
19983
                and     edi, ecx
19984
                xor     ebx, ebp
19985
                ror     eax, 0Bh
19986
                xor     edi, ebp
19987
                mov     ebp, [esi]
19988
                xor     edi, [esp+14h]
19989
                and     ecx, [esp+0Ch]
19990
                and     edi, [esp+1Ch]
19991
                xor     ecx, ebx
19992
                lea     ebp, [eax+ebp+1141E8CEh]
19993
                xor     ecx, edi
19994
                ror     ecx, 7
19995
                add     ebp, ecx
19996
                mov     eax, [esp+4]
19997
                mov     [esp+8], ebp
19998
                mov     ebp, [esp+1Ch]
19999
                mov     ebx, [esp+14h]
20000
                mov     ecx, [esp+0Ch]
20001
                mov     edi, ebx
20002
                and     ebx, [esp]
20003
                and     edi, ecx
20004
                xor     ebx, ebp
20005
                ror     eax, 0Bh
20006
                xor     edi, ebp
20007
                mov     ebp, [esi+48h]
20008
                xor     edi, [esp+10h]
20009
                and     ecx, [esp+8]
20010
                and     edi, [esp+18h]
20011
                xor     ecx, ebx
20012
                lea     ebp, [eax+ebp-5EAB7951h]
20013
                xor     ecx, edi
20014
                ror     ecx, 7
20015
                add     ebp, ecx
20016
                mov     eax, [esp]
20017
                mov     [esp+4], ebp
20018
                mov     ebp, [esp+18h]
20019
                mov     ebx, [esp+10h]
20020
                mov     ecx, [esp+8]
20021
                mov     edi, ebx
20022
                and     ebx, [esp+1Ch]
20023
                and     edi, ecx
20024
                xor     ebx, ebp
20025
                ror     eax, 0Bh
20026
                xor     edi, ebp
20027
                mov     ebp, [esi+6Ch]
20028
                xor     edi, [esp+0Ch]
20029
                and     ecx, [esp+4]
20030
                and     edi, [esp+14h]
20031
                xor     ecx, ebx
20032
                lea     ebp, [eax+ebp+7C72E993h]
20033
                xor     ecx, edi
20034
                ror     ecx, 7
20035
                add     ebp, ecx
20036
                mov     eax, [esp+1Ch]
20037
                mov     [esp], ebp
20038
                mov     ebp, [esp+14h]
20039
                mov     ebx, [esp+0Ch]
20040
                mov     ecx, [esp+4]
20041
                mov     edi, ebx
20042
                and     ebx, [esp+18h]
20043
                and     edi, ecx
20044
                xor     ebx, ebp
20045
                ror     eax, 0Bh
20046
                xor     edi, ebp
20047
                mov     ebp, [esi+34h]
20048
                xor     edi, [esp+8]
20049
                and     ecx, [esp]
20050
                and     edi, [esp+10h]
20051
                xor     ecx, ebx
20052
                lea     ebp, [eax+ebp-4C11EBEFh]
20053
                xor     ecx, edi
20054
                ror     ecx, 7
20055
                add     ebp, ecx
20056
                mov     eax, [esp+18h]
20057
                mov     [esp+1Ch], ebp
20058
                mov     ebp, [esp+10h]
20059
                mov     ebx, [esp+8]
20060
                mov     ecx, [esp]
20061
                mov     edi, ebx
20062
                and     ebx, [esp+14h]
20063
                and     edi, ecx
20064
                xor     ebx, ebp
20065
                ror     eax, 0Bh
20066
                xor     edi, ebp
20067
                mov     ebp, [esi+18h]
20068
                xor     edi, [esp+4]
20069
                and     ecx, [esp+1Ch]
20070
                and     edi, [esp+0Ch]
20071
                xor     ecx, ebx
20072
                lea     ebp, [eax+ebp+636FBC2Ah]
20073
                xor     ecx, edi
20074
                ror     ecx, 7
20075
                add     ebp, ecx
20076
                mov     eax, [esp+14h]
20077
                mov     [esp+18h], ebp
20078
                mov     ebp, [esp+0Ch]
20079
                mov     ebx, [esp+4]
20080
                mov     ecx, [esp+1Ch]
20081
                mov     edi, ebx
20082
                and     ebx, [esp+10h]
20083
                and     edi, ecx
20084
                xor     ebx, ebp
20085
                ror     eax, 0Bh
20086
                xor     edi, ebp
20087
                mov     ebp, [esi+54h]
20088
                xor     edi, [esp]
20089
                and     ecx, [esp+18h]
20090
                and     edi, [esp+8]
20091
                xor     ecx, ebx
20092
                lea     ebp, [eax+ebp+2BA9C55Dh]
20093
                xor     ecx, edi
20094
                ror     ecx, 7
20095
                add     ebp, ecx
20096
                mov     eax, [esp+10h]
20097
                mov     [esp+14h], ebp
20098
                mov     ebp, [esp+8]
20099
                mov     ebx, [esp]
20100
                mov     ecx, [esp+18h]
20101
                mov     edi, ebx
20102
                and     ebx, [esp+0Ch]
20103
                and     edi, ecx
20104
                xor     ebx, ebp
20105
                ror     eax, 0Bh
20106
                xor     edi, ebp
20107
                mov     ebp, [esi+28h]
20108
                xor     edi, [esp+1Ch]
20109
                and     ecx, [esp+14h]
20110
                and     edi, [esp+4]
20111
                xor     ecx, ebx
20112
                lea     ebp, [eax+ebp+741831F6h]
20113
                xor     ecx, edi
20114
                ror     ecx, 7
20115
                add     ebp, ecx
20116
                mov     eax, [esp+0Ch]
20117
                mov     [esp+10h], ebp
20118
                mov     ebp, [esp+4]
20119
                mov     ebx, [esp+1Ch]
20120
                mov     ecx, [esp+14h]
20121
                mov     edi, ebx
20122
                and     ebx, [esp+8]
20123
                and     edi, ecx
20124
                xor     ebx, ebp
20125
                ror     eax, 0Bh
20126
                xor     edi, ebp
20127
                mov     ebp, [esi+5Ch]
20128
                xor     edi, [esp+18h]
20129
                and     ecx, [esp+10h]
20130
                and     edi, [esp]
20131
                xor     ecx, ebx
20132
                lea     ebp, [eax+ebp-31A3C1EAh]
20133
                xor     ecx, edi
20134
                ror     ecx, 7
20135
                add     ebp, ecx
20136
                mov     eax, [esp+8]
20137
                mov     [esp+0Ch], ebp
20138
                mov     ebp, [esp]
20139
                mov     ebx, [esp+18h]
20140
                mov     ecx, [esp+10h]
20141
                mov     edi, ebx
20142
                and     ebx, [esp+4]
20143
                and     edi, ecx
20144
                xor     ebx, ebp
20145
                ror     eax, 0Bh
20146
                xor     edi, ebp
20147
                mov     ebp, [esi+2Ch]
20148
                xor     edi, [esp+14h]
20149
                and     ecx, [esp+0Ch]
20150
                and     edi, [esp+1Ch]
20151
                xor     ecx, ebx
20152
                lea     ebp, [eax+ebp-64786CE2h]
20153
                xor     ecx, edi
20154
                ror     ecx, 7
20155
                add     ebp, ecx
20156
                mov     eax, [esp+4]
20157
                mov     [esp+8], ebp
20158
                mov     ebp, [esp+1Ch]
20159
                mov     ebx, [esp+14h]
20160
                mov     ecx, [esp+0Ch]
20161
                mov     edi, ebx
20162
                and     ebx, [esp]
20163
                and     edi, ecx
20164
                xor     ebx, ebp
20165
                ror     eax, 0Bh
20166
                xor     edi, ebp
20167
                mov     ebp, [esi+14h]
20168
                xor     edi, [esp+10h]
20169
                and     ecx, [esp+8]
20170
                and     edi, [esp+18h]
20171
                xor     ecx, ebx
20172
                lea     ebp, [eax+ebp-502945CDh]
20173
                xor     ecx, edi
20174
                ror     ecx, 7
20175
                add     ebp, ecx
20176
                mov     eax, [esp]
20177
                mov     [esp+4], ebp
20178
                mov     ebp, [esp+18h]
20179
                mov     ebx, [esp+10h]
20180
                mov     ecx, [esp+8]
20181
                mov     edi, ebx
20182
                and     ebx, [esp+1Ch]
20183
                and     edi, ecx
20184
                xor     ebx, ebp
20185
                ror     eax, 0Bh
20186
                xor     edi, ebp
20187
                mov     ebp, [esi+8]
20188
                xor     edi, [esp+0Ch]
20189
                and     ecx, [esp+4]
20190
                and     edi, [esp+14h]
20191
                xor     ecx, ebx
20192
                lea     ebp, [eax+ebp+6C24CF5Ch]
20193
                xor     ecx, edi
20194
                ror     ecx, 7
20195
                add     ebp, ecx
20196
                mov     eax, [esp+1Ch]
20197
                mov     [esp], ebp
20198
                mov     ebp, [esp]
20199
                mov     ecx, [esp+14h]
20200
                mov     edx, [esp+4]
20201
                mov     edi, ebp
20202
                mov     ebx, edx
20203
                xor     ebp, 0FFFFFFFFh
20204
                xor     ebx, 0FFFFFFFFh
20205
                and     ebp, ecx
20206
                and     ebx, [esp+8]
20207
                xor     ebp, [esp+10h]
20208
                xor     ebx, edx
20209
                xor     ebp, [esp+18h]
20210
                xor     ebx, ebp
20211
                mov     ebp, edi
20212
                and     ebx, [esp+0Ch]
20213
                and     ebp, [esp+10h]
20214
                and     edi, edx
20215
                xor     ebp, ecx
20216
                xor     ebx, [esp+18h]
20217
                ror     eax, 0Bh
20218
                xor     ebp, edx
20219
                mov     edx, [esi+60h]
20220
                and     ebp, [esp+8]
20221
                xor     ebx, edi
20222
                xor     ebp, ebx
20223
                lea     edx, [eax+edx+7A325381h]
20224
                ror     ebp, 7
20225
                add     ebp, edx
20226
                mov     eax, [esp+18h]
20227
                mov     [esp+1Ch], ebp
20228
                mov     ecx, [esp+10h]
20229
                mov     edx, [esp]
20230
                mov     edi, ebp
20231
                mov     ebx, edx
20232
                xor     ebp, 0FFFFFFFFh
20233
                xor     ebx, 0FFFFFFFFh
20234
                and     ebp, ecx
20235
                and     ebx, [esp+4]
20236
                xor     ebp, [esp+0Ch]
20237
                xor     ebx, edx
20238
                xor     ebp, [esp+14h]
20239
                xor     ebx, ebp
20240
                mov     ebp, edi
20241
                and     ebx, [esp+8]
20242
                and     ebp, [esp+0Ch]
20243
                and     edi, edx
20244
                xor     ebp, ecx
20245
                xor     ebx, [esp+14h]
20246
                ror     eax, 0Bh
20247
                xor     ebp, edx
20248
                mov     edx, [esi+10h]
20249
                and     ebp, [esp+4]
20250
                xor     ebx, edi
20251
                xor     ebp, ebx
20252
                lea     edx, [eax+edx+28958677h]
20253
                ror     ebp, 7
20254
                add     ebp, edx
20255
                mov     eax, [esp+14h]
20256
                mov     [esp+18h], ebp
20257
                mov     ecx, [esp+0Ch]
20258
                mov     edx, [esp+1Ch]
20259
                mov     edi, ebp
20260
                mov     ebx, edx
20261
                xor     ebp, 0FFFFFFFFh
20262
                xor     ebx, 0FFFFFFFFh
20263
                and     ebp, ecx
20264
                and     ebx, [esp]
20265
                xor     ebp, [esp+8]
20266
                xor     ebx, edx
20267
                xor     ebp, [esp+10h]
20268
                xor     ebx, ebp
20269
                mov     ebp, edi
20270
                and     ebx, [esp+4]
20271
                and     ebp, [esp+8]
20272
                and     edi, edx
20273
                xor     ebp, ecx
20274
                xor     ebx, [esp+10h]
20275
                ror     eax, 0Bh
20276
                xor     ebp, edx
20277
                mov     edx, [esi]
20278
                and     ebp, [esp]
20279
                xor     ebx, edi
20280
                xor     ebp, ebx
20281
                lea     edx, [eax+edx+3B8F4898h]
20282
                ror     ebp, 7
20283
                add     ebp, edx
20284
                mov     eax, [esp+10h]
20285
                mov     [esp+14h], ebp
20286
                mov     ecx, [esp+8]
20287
                mov     edx, [esp+18h]
20288
                mov     edi, ebp
20289
                mov     ebx, edx
20290
                xor     ebp, 0FFFFFFFFh
20291
                xor     ebx, 0FFFFFFFFh
20292
                and     ebp, ecx
20293
                and     ebx, [esp+1Ch]
20294
                xor     ebp, [esp+4]
20295
                xor     ebx, edx
20296
                xor     ebp, [esp+0Ch]
20297
                xor     ebx, ebp
20298
                mov     ebp, edi
20299
                and     ebx, [esp]
20300
                and     ebp, [esp+4]
20301
                and     edi, edx
20302
                xor     ebp, ecx
20303
                xor     ebx, [esp+0Ch]
20304
                ror     eax, 0Bh
20305
                xor     ebp, edx
20306
                mov     edx, [esi+38h]
20307
                and     ebp, [esp+1Ch]
20308
                xor     ebx, edi
20309
                xor     ebp, ebx
20310
                lea     edx, [eax+edx+6B4BB9AFh]
20311
                ror     ebp, 7
20312
                add     ebp, edx
20313
                mov     eax, [esp+0Ch]
20314
                mov     [esp+10h], ebp
20315
                mov     ecx, [esp+4]
20316
                mov     edx, [esp+14h]
20317
                mov     edi, ebp
20318
                mov     ebx, edx
20319
                xor     ebp, 0FFFFFFFFh
20320
                xor     ebx, 0FFFFFFFFh
20321
                and     ebp, ecx
20322
                and     ebx, [esp+18h]
20323
                xor     ebp, [esp]
20324
                xor     ebx, edx
20325
                xor     ebp, [esp+8]
20326
                xor     ebx, ebp
20327
                mov     ebp, edi
20328
                and     ebx, [esp+1Ch]
20329
                and     ebp, [esp]
20330
                and     edi, edx
20331
                xor     ebp, ecx
20332
                xor     ebx, [esp+8]
20333
                ror     eax, 0Bh
20334
                xor     ebp, edx
20335
                mov     edx, [esi+8]
20336
                and     ebp, [esp+18h]
20337
                xor     ebx, edi
20338
                xor     ebp, ebx
20339
                lea     edx, [eax+edx-3B4017E5h]
20340
                ror     ebp, 7
20341
                add     ebp, edx
20342
                mov     eax, [esp+8]
20343
                mov     [esp+0Ch], ebp
20344
                mov     ecx, [esp]
20345
                mov     edx, [esp+10h]
20346
                mov     edi, ebp
20347
                mov     ebx, edx
20348
                xor     ebp, 0FFFFFFFFh
20349
                xor     ebx, 0FFFFFFFFh
20350
                and     ebp, ecx
20351
                and     ebx, [esp+14h]
20352
                xor     ebp, [esp+1Ch]
20353
                xor     ebx, edx
20354
                xor     ebp, [esp+4]
20355
                xor     ebx, ebp
20356
                mov     ebp, edi
20357
                and     ebx, [esp+18h]
20358
                and     ebp, [esp+1Ch]
20359
                and     edi, edx
20360
                xor     ebp, ecx
20361
                xor     ebx, [esp+4]
20362
                ror     eax, 0Bh
20363
                xor     ebp, edx
20364
                mov     edx, [esi+1Ch]
20365
                and     ebp, [esp+14h]
20366
                xor     ebx, edi
20367
                xor     ebp, ebx
20368
                lea     edx, [eax+edx+66282193h]
20369
                ror     ebp, 7
20370
                add     ebp, edx
20371
                mov     eax, [esp+4]
20372
                mov     [esp+8], ebp
20373
                mov     ecx, [esp+1Ch]
20374
                mov     edx, [esp+0Ch]
20375
                mov     edi, ebp
20376
                mov     ebx, edx
20377
                xor     ebp, 0FFFFFFFFh
20378
                xor     ebx, 0FFFFFFFFh
20379
                and     ebp, ecx
20380
                and     ebx, [esp+10h]
20381
                xor     ebp, [esp+18h]
20382
                xor     ebx, edx
20383
                xor     ebp, [esp]
20384
                xor     ebx, ebp
20385
                mov     ebp, edi
20386
                and     ebx, [esp+14h]
20387
                and     ebp, [esp+18h]
20388
                and     edi, edx
20389
                xor     ebp, ecx
20390
                xor     ebx, [esp]
20391
                ror     eax, 0Bh
20392
                xor     ebp, edx
20393
                mov     edx, [esi+70h]
20394
                and     ebp, [esp+10h]
20395
                xor     ebx, edi
20396
                xor     ebp, ebx
20397
                lea     edx, [eax+edx+61D809CCh]
20398
                ror     ebp, 7
20399
                add     ebp, edx
20400
                mov     eax, [esp]
20401
                mov     [esp+4], ebp
20402
                mov     ecx, [esp+18h]
20403
                mov     edx, [esp+8]
20404
                mov     edi, ebp
20405
                mov     ebx, edx
20406
                xor     ebp, 0FFFFFFFFh
20407
                xor     ebx, 0FFFFFFFFh
20408
                and     ebp, ecx
20409
                and     ebx, [esp+0Ch]
20410
                xor     ebp, [esp+14h]
20411
                xor     ebx, edx
20412
                xor     ebp, [esp+1Ch]
20413
                xor     ebx, ebp
20414
                mov     ebp, edi
20415
                and     ebx, [esp+10h]
20416
                and     ebp, [esp+14h]
20417
                and     edi, edx
20418
                xor     ebp, ecx
20419
                xor     ebx, [esp+1Ch]
20420
                ror     eax, 0Bh
20421
                xor     ebp, edx
20422
                mov     edx, [esi+5Ch]
20423
                and     ebp, [esp+0Ch]
20424
                xor     ebx, edi
20425
                xor     ebp, ebx
20426
                lea     edx, [eax+edx-4DE566Fh]
20427
                ror     ebp, 7
20428
                add     ebp, edx
20429
                mov     eax, [esp+1Ch]
20430
                mov     [esp], ebp
20431
                mov     ecx, [esp+14h]
20432
                mov     edx, [esp+4]
20433
                mov     edi, ebp
20434
                mov     ebx, edx
20435
                xor     ebp, 0FFFFFFFFh
20436
                xor     ebx, 0FFFFFFFFh
20437
                and     ebp, ecx
20438
                and     ebx, [esp+8]
20439
                xor     ebp, [esp+10h]
20440
                xor     ebx, edx
20441
                xor     ebp, [esp+18h]
20442
                xor     ebx, ebp
20443
                mov     ebp, edi
20444
                and     ebx, [esp+0Ch]
20445
                and     ebp, [esp+10h]
20446
                and     edi, edx
20447
                xor     ebp, ecx
20448
                xor     ebx, [esp+18h]
20449
                ror     eax, 0Bh
20450
                xor     ebp, edx
20451
                mov     edx, [esi+68h]
20452
                and     ebp, [esp+8]
20453
                xor     ebx, edi
20454
                xor     ebp, ebx
20455
                lea     edx, [eax+edx+487CAC60h]
20456
                ror     ebp, 7
20457
                add     ebp, edx
20458
                mov     eax, [esp+18h]
20459
                mov     [esp+1Ch], ebp
20460
                mov     ecx, [esp+10h]
20461
                mov     edx, [esp]
20462
                mov     edi, ebp
20463
                mov     ebx, edx
20464
                xor     ebp, 0FFFFFFFFh
20465
                xor     ebx, 0FFFFFFFFh
20466
                and     ebp, ecx
20467
                and     ebx, [esp+4]
20468
                xor     ebp, [esp+0Ch]
20469
                xor     ebx, edx
20470
                xor     ebp, [esp+14h]
20471
                xor     ebx, ebp
20472
                mov     ebp, edi
20473
                and     ebx, [esp+8]
20474
                and     ebp, [esp+0Ch]
20475
                and     edi, edx
20476
                xor     ebp, ecx
20477
                xor     ebx, [esp+14h]
20478
                ror     eax, 0Bh
20479
                xor     ebp, edx
20480
                mov     edx, [esi+18h]
20481
                and     ebp, [esp+4]
20482
                xor     ebx, edi
20483
                xor     ebp, ebx
20484
                lea     edx, [eax+edx+5DEC8032h]
20485
                ror     ebp, 7
20486
                add     ebp, edx
20487
                mov     eax, [esp+14h]
20488
                mov     [esp+18h], ebp
20489
                mov     ecx, [esp+0Ch]
20490
                mov     edx, [esp+1Ch]
20491
                mov     edi, ebp
20492
                mov     ebx, edx
20493
                xor     ebp, 0FFFFFFFFh
20494
                xor     ebx, 0FFFFFFFFh
20495
                and     ebp, ecx
20496
                and     ebx, [esp]
20497
                xor     ebp, [esp+8]
20498
                xor     ebx, edx
20499
                xor     ebp, [esp+10h]
20500
                xor     ebx, ebp
20501
                mov     ebp, edi
20502
                and     ebx, [esp+4]
20503
                and     ebp, [esp+8]
20504
                and     edi, edx
20505
                xor     ebp, ecx
20506
                xor     ebx, [esp+10h]
20507
                ror     eax, 0Bh
20508
                xor     ebp, edx
20509
                mov     edx, [esi+78h]
20510
                and     ebp, [esp]
20511
                xor     ebx, edi
20512
                xor     ebp, ebx
20513
                lea     edx, [eax+edx-107BA2A3h]
20514
                ror     ebp, 7
20515
                add     ebp, edx
20516
                mov     eax, [esp+10h]
20517
                mov     [esp+14h], ebp
20518
                mov     ecx, [esp+8]
20519
                mov     edx, [esp+18h]
20520
                mov     edi, ebp
20521
                mov     ebx, edx
20522
                xor     ebp, 0FFFFFFFFh
20523
                xor     ebx, 0FFFFFFFFh
20524
                and     ebp, ecx
20525
                and     ebx, [esp+1Ch]
20526
                xor     ebp, [esp+4]
20527
                xor     ebx, edx
20528
                xor     ebp, [esp+0Ch]
20529
                xor     ebx, ebp
20530
                mov     ebp, edi
20531
                and     ebx, [esp]
20532
                and     ebp, [esp+4]
20533
                and     edi, edx
20534
                xor     ebp, ecx
20535
                xor     ebx, [esp+0Ch]
20536
                ror     eax, 0Bh
20537
                xor     ebp, edx
20538
                mov     edx, [esi+50h]
20539
                and     ebp, [esp+1Ch]
20540
                xor     ebx, edi
20541
                xor     ebp, ebx
20542
                lea     edx, [eax+edx-167A8A4Fh]
20543
                ror     ebp, 7
20544
                add     ebp, edx
20545
                mov     eax, [esp+0Ch]
20546
                mov     [esp+10h], ebp
20547
                mov     ecx, [esp+4]
20548
                mov     edx, [esp+14h]
20549
                mov     edi, ebp
20550
                mov     ebx, edx
20551
                xor     ebp, 0FFFFFFFFh
20552
                xor     ebx, 0FFFFFFFFh
20553
                and     ebp, ecx
20554
                and     ebx, [esp+18h]
20555
                xor     ebp, [esp]
20556
                xor     ebx, edx
20557
                xor     ebp, [esp+8]
20558
                xor     ebx, ebp
20559
                mov     ebp, edi
20560
                and     ebx, [esp+1Ch]
20561
                and     ebp, [esp]
20562
                and     edi, edx
20563
                xor     ebp, ecx
20564
                xor     ebx, [esp+8]
20565
                ror     eax, 0Bh
20566
                xor     ebp, edx
20567
                mov     edx, [esi+48h]
20568
                and     ebp, [esp+18h]
20569
                xor     ebx, edi
20570
                xor     ebp, ebx
20571
                lea     edx, [eax+edx-23D9DCFEh]
20572
                ror     ebp, 7
20573
                add     ebp, edx
20574
                mov     eax, [esp+8]
20575
                mov     [esp+0Ch], ebp
20576
                mov     ecx, [esp]
20577
                mov     edx, [esp+10h]
20578
                mov     edi, ebp
20579
                mov     ebx, edx
20580
                xor     ebp, 0FFFFFFFFh
20581
                xor     ebx, 0FFFFFFFFh
20582
                and     ebp, ecx
20583
                and     ebx, [esp+14h]
20584
                xor     ebp, [esp+1Ch]
20585
                xor     ebx, edx
20586
                xor     ebp, [esp+4]
20587
                xor     ebx, ebp
20588
                mov     ebp, edi
20589
                and     ebx, [esp+18h]
20590
                and     ebp, [esp+1Ch]
20591
                and     edi, edx
20592
                xor     ebp, ecx
20593
                xor     ebx, [esp+4]
20594
                ror     eax, 0Bh
20595
                xor     ebp, edx
20596
                mov     edx, [esi+64h]
20597
                and     ebp, [esp+14h]
20598
                xor     ebx, edi
20599
                xor     ebp, ebx
20600
                lea     edx, [eax+edx-149AE478h]
20601
                ror     ebp, 7
20602
                add     ebp, edx
20603
                mov     eax, [esp+4]
20604
                mov     [esp+8], ebp
20605
                mov     ecx, [esp+1Ch]
20606
                mov     edx, [esp+0Ch]
20607
                mov     edi, ebp
20608
                mov     ebx, edx
20609
                xor     ebp, 0FFFFFFFFh
20610
                xor     ebx, 0FFFFFFFFh
20611
                and     ebp, ecx
20612
                and     ebx, [esp+10h]
20613
                xor     ebp, [esp+18h]
20614
                xor     ebx, edx
20615
                xor     ebp, [esp]
20616
                xor     ebx, ebp
20617
                mov     ebp, edi
20618
                and     ebx, [esp+14h]
20619
                and     ebp, [esp+18h]
20620
                and     edi, edx
20621
                xor     ebp, ecx
20622
                xor     ebx, [esp]
20623
                ror     eax, 0Bh
20624
                xor     ebp, edx
20625
                mov     edx, [esi+4Ch]
20626
                and     ebp, [esp+10h]
20627
                xor     ebx, edi
20628
                xor     ebp, ebx
20629
                lea     edx, [eax+edx+23893E81h]
20630
                ror     ebp, 7
20631
                add     ebp, edx
20632
                mov     eax, [esp]
20633
                mov     [esp+4], ebp
20634
                mov     ecx, [esp+18h]
20635
                mov     edx, [esp+8]
20636
                mov     edi, ebp
20637
                mov     ebx, edx
20638
                xor     ebp, 0FFFFFFFFh
20639
                xor     ebx, 0FFFFFFFFh
20640
                and     ebp, ecx
20641
                and     ebx, [esp+0Ch]
20642
                xor     ebp, [esp+14h]
20643
                xor     ebx, edx
20644
                xor     ebp, [esp+1Ch]
20645
                xor     ebx, ebp
20646
                mov     ebp, edi
20647
                and     ebx, [esp+10h]
20648
                and     ebp, [esp+14h]
20649
                and     edi, edx
20650
                xor     ebp, ecx
20651
                xor     ebx, [esp+1Ch]
20652
                ror     eax, 0Bh
20653
                xor     ebp, edx
20654
                mov     edx, [esi+0Ch]
20655
                and     ebp, [esp+0Ch]
20656
                xor     ebx, edi
20657
                xor     ebp, ebx
20658
                lea     edx, [eax+edx-2C69533Bh]
20659
                ror     ebp, 7
20660
                add     ebp, edx
20661
                mov     eax, [esp+1Ch]
20662
                mov     [esp], ebp
20663
                mov     ecx, [esp+14h]
20664
                mov     edx, [esp+4]
20665
                mov     edi, ebp
20666
                mov     ebx, edx
20667
                xor     ebp, 0FFFFFFFFh
20668
                xor     ebx, 0FFFFFFFFh
20669
                and     ebp, ecx
20670
                and     ebx, [esp+8]
20671
                xor     ebp, [esp+10h]
20672
                xor     ebx, edx
20673
                xor     ebp, [esp+18h]
20674
                xor     ebx, ebp
20675
                mov     ebp, edi
20676
                and     ebx, [esp+0Ch]
20677
                and     ebp, [esp+10h]
20678
                and     edi, edx
20679
                xor     ebp, ecx
20680
                xor     ebx, [esp+18h]
20681
                ror     eax, 0Bh
20682
                xor     ebp, edx
20683
                mov     edx, [esi+58h]
20684
                and     ebp, [esp+8]
20685
                xor     ebx, edi
20686
                xor     ebp, ebx
20687
                lea     edx, [eax+edx+0F6D6FF3h]
20688
                ror     ebp, 7
20689
                add     ebp, edx
20690
                mov     eax, [esp+18h]
20691
                mov     [esp+1Ch], ebp
20692
                mov     ecx, [esp+10h]
20693
                mov     edx, [esp]
20694
                mov     edi, ebp
20695
                mov     ebx, edx
20696
                xor     ebp, 0FFFFFFFFh
20697
                xor     ebx, 0FFFFFFFFh
20698
                and     ebp, ecx
20699
                and     ebx, [esp+4]
20700
                xor     ebp, [esp+0Ch]
20701
                xor     ebx, edx
20702
                xor     ebp, [esp+14h]
20703
                xor     ebx, ebp
20704
                mov     ebp, edi
20705
                and     ebx, [esp+8]
20706
                and     ebp, [esp+0Ch]
20707
                and     edi, edx
20708
                xor     ebp, ecx
20709
                xor     ebx, [esp+14h]
20710
                ror     eax, 0Bh
20711
                xor     ebp, edx
20712
                mov     edx, [esi+2Ch]
20713
                and     ebp, [esp+4]
20714
                xor     ebx, edi
20715
                xor     ebp, ebx
20716
                lea     edx, [eax+edx-7C0BBDC7h]
20717
                ror     ebp, 7
20718
                add     ebp, edx
20719
                mov     eax, [esp+14h]
20720
                mov     [esp+18h], ebp
20721
                mov     ecx, [esp+0Ch]
20722
                mov     edx, [esp+1Ch]
20723
                mov     edi, ebp
20724
                mov     ebx, edx
20725
                xor     ebp, 0FFFFFFFFh
20726
                xor     ebx, 0FFFFFFFFh
20727
                and     ebp, ecx
20728
                and     ebx, [esp]
20729
                xor     ebp, [esp+8]
20730
                xor     ebx, edx
20731
                xor     ebp, [esp+10h]
20732
                xor     ebx, ebp
20733
                mov     ebp, edi
20734
                and     ebx, [esp+4]
20735
                and     ebp, [esp+8]
20736
                and     edi, edx
20737
                xor     ebp, ecx
20738
                xor     ebx, [esp+10h]
20739
                ror     eax, 0Bh
20740
                xor     ebp, edx
20741
                mov     edx, [esi+7Ch]
20742
                and     ebp, [esp]
20743
                xor     ebx, edi
20744
                xor     ebp, ebx
20745
                lea     edx, [eax+edx+2E0B4482h]
20746
                ror     ebp, 7
20747
                add     ebp, edx
20748
                mov     eax, [esp+10h]
20749
                mov     [esp+14h], ebp
20750
                mov     ecx, [esp+8]
20751
                mov     edx, [esp+18h]
20752
                mov     edi, ebp
20753
                mov     ebx, edx
20754
                xor     ebp, 0FFFFFFFFh
20755
                xor     ebx, 0FFFFFFFFh
20756
                and     ebp, ecx
20757
                and     ebx, [esp+1Ch]
20758
                xor     ebp, [esp+4]
20759
                xor     ebx, edx
20760
                xor     ebp, [esp+0Ch]
20761
                xor     ebx, ebp
20762
                mov     ebp, edi
20763
                and     ebx, [esp]
20764
                and     ebp, [esp+4]
20765
                and     edi, edx
20766
                xor     ebp, ecx
20767
                xor     ebx, [esp+0Ch]
20768
                ror     eax, 0Bh
20769
                xor     ebp, edx
20770
                mov     edx, [esi+54h]
20771
                and     ebp, [esp+1Ch]
20772
                xor     ebx, edi
20773
                xor     ebp, ebx
20774
                lea     edx, [eax+edx-5B7BDFFCh]
20775
                ror     ebp, 7
20776
                add     ebp, edx
20777
                mov     eax, [esp+0Ch]
20778
                mov     [esp+10h], ebp
20779
                mov     ecx, [esp+4]
20780
                mov     edx, [esp+14h]
20781
                mov     edi, ebp
20782
                mov     ebx, edx
20783
                xor     ebp, 0FFFFFFFFh
20784
                xor     ebx, 0FFFFFFFFh
20785
                and     ebp, ecx
20786
                and     ebx, [esp+18h]
20787
                xor     ebp, [esp]
20788
                xor     ebx, edx
20789
                xor     ebp, [esp+8]
20790
                xor     ebx, ebp
20791
                mov     ebp, edi
20792
                and     ebx, [esp+1Ch]
20793
                and     ebp, [esp]
20794
                and     edi, edx
20795
                xor     ebp, ecx
20796
                xor     ebx, [esp+8]
20797
                ror     eax, 0Bh
20798
                xor     ebp, edx
20799
                mov     edx, [esi+20h]
20800
                and     ebp, [esp+18h]
20801
                xor     ebx, edi
20802
                xor     ebp, ebx
20803
                lea     edx, [eax+edx+69C8F04Ah]
20804
                ror     ebp, 7
20805
                add     ebp, edx
20806
                mov     eax, [esp+8]
20807
                mov     [esp+0Ch], ebp
20808
                mov     ecx, [esp]
20809
                mov     edx, [esp+10h]
20810
                mov     edi, ebp
20811
                mov     ebx, edx
20812
                xor     ebp, 0FFFFFFFFh
20813
                xor     ebx, 0FFFFFFFFh
20814
                and     ebp, ecx
20815
                and     ebx, [esp+14h]
20816
                xor     ebp, [esp+1Ch]
20817
                xor     ebx, edx
20818
                xor     ebp, [esp+4]
20819
                xor     ebx, ebp
20820
                mov     ebp, edi
20821
                and     ebx, [esp+18h]
20822
                and     ebp, [esp+1Ch]
20823
                and     edi, edx
20824
                xor     ebp, ecx
20825
                xor     ebx, [esp+4]
20826
                ror     eax, 0Bh
20827
                xor     ebp, edx
20828
                mov     edx, [esi+6Ch]
20829
                and     ebp, [esp+14h]
20830
                xor     ebx, edi
20831
                xor     ebp, ebx
20832
                lea     edx, [eax+edx-61E064A2h]
20833
                ror     ebp, 7
20834
                add     ebp, edx
20835
                mov     eax, [esp+4]
20836
                mov     [esp+8], ebp
20837
                mov     ecx, [esp+1Ch]
20838
                mov     edx, [esp+0Ch]
20839
                mov     edi, ebp
20840
                mov     ebx, edx
20841
                xor     ebp, 0FFFFFFFFh
20842
                xor     ebx, 0FFFFFFFFh
20843
                and     ebp, ecx
20844
                and     ebx, [esp+10h]
20845
                xor     ebp, [esp+18h]
20846
                xor     ebx, edx
20847
                xor     ebp, [esp]
20848
                xor     ebx, ebp
20849
                mov     ebp, edi
20850
                and     ebx, [esp+14h]
20851
                and     ebp, [esp+18h]
20852
                and     edi, edx
20853
                xor     ebp, ecx
20854
                xor     ebx, [esp]
20855
                ror     eax, 0Bh
20856
                xor     ebp, edx
20857
                mov     edx, [esi+30h]
20858
                and     ebp, [esp+10h]
20859
                xor     ebx, edi
20860
                xor     ebp, ebx
20861
                lea     edx, [eax+edx+21C66842h]
20862
                ror     ebp, 7
20863
                add     ebp, edx
20864
                mov     eax, [esp]
20865
                mov     [esp+4], ebp
20866
                mov     ecx, [esp+18h]
20867
                mov     edx, [esp+8]
20868
                mov     edi, ebp
20869
                mov     ebx, edx
20870
                xor     ebp, 0FFFFFFFFh
20871
                xor     ebx, 0FFFFFFFFh
20872
                and     ebp, ecx
20873
                and     ebx, [esp+0Ch]
20874
                xor     ebp, [esp+14h]
20875
                xor     ebx, edx
20876
                xor     ebp, [esp+1Ch]
20877
                xor     ebx, ebp
20878
                mov     ebp, edi
20879
                and     ebx, [esp+10h]
20880
                and     ebp, [esp+14h]
20881
                and     edi, edx
20882
                xor     ebp, ecx
20883
                xor     ebx, [esp+1Ch]
20884
                ror     eax, 0Bh
20885
                xor     ebp, edx
20886
                mov     edx, [esi+24h]
20887
                and     ebp, [esp+0Ch]
20888
                xor     ebx, edi
20889
                xor     ebp, ebx
20890
                lea     edx, [eax+edx-9169366h]
20891
                ror     ebp, 7
20892
                add     ebp, edx
20893
                mov     eax, [esp+1Ch]
20894
                mov     [esp], ebp
20895
                mov     ecx, [esp+14h]
20896
                mov     edx, [esp+4]
20897
                mov     edi, ebp
20898
                mov     ebx, edx
20899
                xor     ebp, 0FFFFFFFFh
20900
                xor     ebx, 0FFFFFFFFh
20901
                and     ebp, ecx
20902
                and     ebx, [esp+8]
20903
                xor     ebp, [esp+10h]
20904
                xor     ebx, edx
20905
                xor     ebp, [esp+18h]
20906
                xor     ebx, ebp
20907
                mov     ebp, edi
20908
                and     ebx, [esp+0Ch]
20909
                and     ebp, [esp+10h]
20910
                and     edi, edx
20911
                xor     ebp, ecx
20912
                xor     ebx, [esp+18h]
20913
                ror     eax, 0Bh
20914
                xor     ebp, edx
20915
                mov     edx, [esi+4]
20916
                and     ebp, [esp+8]
20917
                xor     ebx, edi
20918
                xor     ebp, ebx
20919
                lea     edx, [eax+edx+670C9C61h]
20920
                ror     ebp, 7
20921
                add     ebp, edx
20922
                mov     eax, [esp+18h]
20923
                mov     [esp+1Ch], ebp
20924
                mov     ecx, [esp+10h]
20925
                mov     edx, [esp]
20926
                mov     edi, ebp
20927
                mov     ebx, edx
20928
                xor     ebp, 0FFFFFFFFh
20929
                xor     ebx, 0FFFFFFFFh
20930
                and     ebp, ecx
20931
                and     ebx, [esp+4]
20932
                xor     ebp, [esp+0Ch]
20933
                xor     ebx, edx
20934
                xor     ebp, [esp+14h]
20935
                xor     ebx, ebp
20936
                mov     ebp, edi
20937
                and     ebx, [esp+8]
20938
                and     ebp, [esp+0Ch]
20939
                and     edi, edx
20940
                xor     ebp, ecx
20941
                xor     ebx, [esp+14h]
20942
                ror     eax, 0Bh
20943
                xor     ebp, edx
20944
                mov     edx, [esi+74h]
20945
                and     ebp, [esp+4]
20946
                xor     ebx, edi
20947
                xor     ebp, ebx
20948
                lea     edx, [eax+edx-542C7710h]
20949
                ror     ebp, 7
20950
                add     ebp, edx
20951
                mov     eax, [esp+14h]
20952
                mov     [esp+18h], ebp
20953
                mov     ecx, [esp+0Ch]
20954
                mov     edx, [esp+1Ch]
20955
                mov     edi, ebp
20956
                mov     ebx, edx
20957
                xor     ebp, 0FFFFFFFFh
20958
                xor     ebx, 0FFFFFFFFh
20959
                and     ebp, ecx
20960
                and     ebx, [esp]
20961
                xor     ebp, [esp+8]
20962
                xor     ebx, edx
20963
                xor     ebp, [esp+10h]
20964
                xor     ebx, ebp
20965
                mov     ebp, edi
20966
                and     ebx, [esp+4]
20967
                and     ebp, [esp+8]
20968
                and     edi, edx
20969
                xor     ebp, ecx
20970
                xor     ebx, [esp+10h]
20971
                ror     eax, 0Bh
20972
                xor     ebp, edx
20973
                mov     edx, [esi+14h]
20974
                and     ebp, [esp]
20975
                xor     ebx, edi
20976
                xor     ebp, ebx
20977
                lea     edx, [eax+edx+6A51A0D2h]
20978
                ror     ebp, 7
20979
                add     ebp, edx
20980
                mov     eax, [esp+10h]
20981
                mov     [esp+14h], ebp
20982
                mov     ecx, [esp+8]
20983
                mov     edx, [esp+18h]
20984
                mov     edi, ebp
20985
                mov     ebx, edx
20986
                xor     ebp, 0FFFFFFFFh
20987
                xor     ebx, 0FFFFFFFFh
20988
                and     ebp, ecx
20989
                and     ebx, [esp+1Ch]
20990
                xor     ebp, [esp+4]
20991
                xor     ebx, edx
20992
                xor     ebp, [esp+0Ch]
20993
                xor     ebx, ebp
20994
                mov     ebp, edi
20995
                and     ebx, [esp]
20996
                and     ebp, [esp+4]
20997
                and     edi, edx
20998
                xor     ebp, ecx
20999
                xor     ebx, [esp+0Ch]
21000
                ror     eax, 0Bh
21001
                xor     ebp, edx
21002
                mov     edx, [esi+3Ch]
21003
                and     ebp, [esp+1Ch]
21004
                xor     ebx, edi
21005
                xor     ebp, ebx
21006
                lea     edx, [eax+edx-27ABD098h]
21007
                ror     ebp, 7
21008
                add     ebp, edx
21009
                mov     eax, [esp+0Ch]
21010
                mov     [esp+10h], ebp
21011
                mov     ecx, [esp+4]
21012
                mov     edx, [esp+14h]
21013
                mov     edi, ebp
21014
                mov     ebx, edx
21015
                xor     ebp, 0FFFFFFFFh
21016
                xor     ebx, 0FFFFFFFFh
21017
                and     ebp, ecx
21018
                and     ebx, [esp+18h]
21019
                xor     ebp, [esp]
21020
                xor     ebx, edx
21021
                xor     ebp, [esp+8]
21022
                xor     ebx, ebp
21023
                mov     ebp, edi
21024
                and     ebx, [esp+1Ch]
21025
                and     ebp, [esp]
21026
                and     edi, edx
21027
                xor     ebp, ecx
21028
                xor     ebx, [esp+8]
21029
                ror     eax, 0Bh
21030
                xor     ebp, edx
21031
                mov     edx, [esi+44h]
21032
                and     ebp, [esp+18h]
21033
                xor     ebx, edi
21034
                xor     ebp, ebx
21035
                lea     edx, [eax+edx-69F058D8h]
21036
                ror     ebp, 7
21037
                add     ebp, edx
21038
                mov     eax, [esp+8]
21039
                mov     [esp+0Ch], ebp
21040
                mov     ecx, [esp]
21041
                mov     edx, [esp+10h]
21042
                mov     edi, ebp
21043
                mov     ebx, edx
21044
                xor     ebp, 0FFFFFFFFh
21045
                xor     ebx, 0FFFFFFFFh
21046
                and     ebp, ecx
21047
                and     ebx, [esp+14h]
21048
                xor     ebp, [esp+1Ch]
21049
                xor     ebx, edx
21050
                xor     ebp, [esp+4]
21051
                xor     ebx, ebp
21052
                mov     ebp, edi
21053
                and     ebx, [esp+18h]
21054
                and     ebp, [esp+1Ch]
21055
                and     edi, edx
21056
                xor     ebp, ecx
21057
                xor     ebx, [esp+4]
21058
                ror     eax, 0Bh
21059
                xor     ebp, edx
21060
                mov     edx, [esi+28h]
21061
                and     ebp, [esp+14h]
21062
                xor     ebx, edi
21063
                xor     ebp, ebx
21064
                lea     edx, [eax+edx-54AECC5Dh]
21065
                ror     ebp, 7
21066
                add     ebp, edx
21067
                mov     eax, [esp+4]
21068
                mov     [esp+8], ebp
21069
                mov     ecx, [esp+1Ch]
21070
                mov     edx, [esp+0Ch]
21071
                mov     edi, ebp
21072
                mov     ebx, edx
21073
                xor     ebp, 0FFFFFFFFh
21074
                xor     ebx, 0FFFFFFFFh
21075
                and     ebp, ecx
21076
                and     ebx, [esp+10h]
21077
                xor     ebp, [esp+18h]
21078
                xor     ebx, edx
21079
                xor     ebp, [esp]
21080
                xor     ebx, ebp
21081
                mov     ebp, edi
21082
                and     ebx, [esp+14h]
21083
                and     ebp, [esp+18h]
21084
                and     edi, edx
21085
                xor     ebp, ecx
21086
                xor     ebx, [esp]
21087
                ror     eax, 0Bh
21088
                xor     ebp, edx
21089
                mov     edx, [esi+40h]
21090
                and     ebp, [esp+10h]
21091
                xor     ebx, edi
21092
                xor     ebp, ebx
21093
                lea     edx, [eax+edx+6EEF0B6Ch]
21094
                ror     ebp, 7
21095
                add     ebp, edx
21096
                mov     eax, [esp]
21097
                mov     [esp+4], ebp
21098
                mov     ecx, [esp+18h]
21099
                mov     edx, [esp+8]
21100
                mov     edi, ebp
21101
                mov     ebx, edx
21102
                xor     ebp, 0FFFFFFFFh
21103
                xor     ebx, 0FFFFFFFFh
21104
                and     ebp, ecx
21105
                and     ebx, [esp+0Ch]
21106
                xor     ebp, [esp+14h]
21107
                xor     ebx, edx
21108
                xor     ebp, [esp+1Ch]
21109
                xor     ebx, ebp
21110
                mov     ebp, edi
21111
                and     ebx, [esp+10h]
21112
                and     ebp, [esp+14h]
21113
                and     edi, edx
21114
                xor     ebp, ecx
21115
                xor     ebx, [esp+1Ch]
21116
                ror     eax, 0Bh
21117
                xor     ebp, edx
21118
                mov     edx, [esi+34h]
21119
                and     ebp, [esp+0Ch]
21120
                xor     ebx, edi
21121
                xor     ebp, ebx
21122
                lea     edx, [eax+edx+137A3BE4h]
21123
                ror     ebp, 7
21124
                add     ebp, edx
21125
                mov     eax, [esp+1Ch]
21126
                mov     [esp], ebp
21127
                nop
21128
                nop
21129
                nop
21130
                nop
21131
                mov     ebx, [esp+0Ch]
21132
                mov     ecx, [esp+10h]
21133
                and     ebp, ebx
21134
                mov     edx, [esp+14h]
21135
                and     ebx, ecx
21136
                mov     edi, [esp+18h]
21137
                and     ecx, edx
21138
                xor     edx, 0FFFFFFFFh
21139
                and     ebx, edi
21140
                and     edi, [esp+8]
21141
                xor     ebx, edx
21142
                ror     eax, 0Bh
21143
                xor     ecx, edi
21144
                mov     edi, [esi+6Ch]
21145
                and     ebx, [esp+4]
21146
                xor     ebp, ecx
21147
                lea     edi, [eax+edi-45C40FB0h]
21148
                xor     ebp, ebx
21149
                ror     ebp, 7
21150
                add     ebp, edi
21151
                mov     eax, [esp+18h]
21152
                mov     [esp+1Ch], ebp
21153
                mov     ebx, [esp+8]
21154
                mov     ecx, [esp+0Ch]
21155
                and     ebp, ebx
21156
                mov     edx, [esp+10h]
21157
                and     ebx, ecx
21158
                mov     edi, [esp+14h]
21159
                and     ecx, edx
21160
                xor     edx, 0FFFFFFFFh
21161
                and     ebx, edi
21162
                and     edi, [esp+4]
21163
                xor     ebx, edx
21164
                ror     eax, 0Bh
21165
                xor     ecx, edi
21166
                mov     edi, [esi+0Ch]
21167
                and     ebx, [esp]
21168
                xor     ebp, ecx
21169
                lea     edi, [eax+edi+7EFB2A98h]
21170
                xor     ebp, ebx
21171
                ror     ebp, 7
21172
                add     ebp, edi
21173
                mov     eax, [esp+14h]
21174
                mov     [esp+18h], ebp
21175
                mov     ebx, [esp+4]
21176
                mov     ecx, [esp+8]
21177
                and     ebp, ebx
21178
                mov     edx, [esp+0Ch]
21179
                and     ebx, ecx
21180
                mov     edi, [esp+10h]
21181
                and     ecx, edx
21182
                xor     edx, 0FFFFFFFFh
21183
                and     ebx, edi
21184
                and     edi, [esp]
21185
                xor     ebx, edx
21186
                ror     eax, 0Bh
21187
                xor     ecx, edi
21188
                mov     edi, [esi+54h]
21189
                and     ebx, [esp+1Ch]
21190
                xor     ebp, ecx
21191
                lea     edi, [eax+edi-5E0E9AE3h]
21192
                xor     ebp, ebx
21193
                ror     ebp, 7
21194
                add     ebp, edi
21195
                mov     eax, [esp+10h]
21196
                mov     [esp+14h], ebp
21197
                mov     ebx, [esp]
21198
                mov     ecx, [esp+4]
21199
                and     ebp, ebx
21200
                mov     edx, [esp+8]
21201
                and     ebx, ecx
21202
                mov     edi, [esp+0Ch]
21203
                and     ecx, edx
21204
                xor     edx, 0FFFFFFFFh
21205
                and     ebx, edi
21206
                and     edi, [esp+1Ch]
21207
                xor     ebx, edx
21208
                ror     eax, 0Bh
21209
                xor     ecx, edi
21210
                mov     edi, [esi+68h]
21211
                and     ebx, [esp+18h]
21212
                xor     ebp, ecx
21213
                lea     edi, [eax+edi+39AF0176h]
21214
                xor     ebp, ebx
21215
                ror     ebp, 7
21216
                add     ebp, edi
21217
                mov     eax, [esp+0Ch]
21218
                mov     [esp+10h], ebp
21219
                mov     ebx, [esp+1Ch]
21220
                mov     ecx, [esp]
21221
                and     ebp, ebx
21222
                mov     edx, [esp+4]
21223
                and     ebx, ecx
21224
                mov     edi, [esp+8]
21225
                and     ecx, edx
21226
                xor     edx, 0FFFFFFFFh
21227
                and     ebx, edi
21228
                and     edi, [esp+18h]
21229
                xor     ebx, edx
21230
                ror     eax, 0Bh
21231
                xor     ecx, edi
21232
                mov     edi, [esi+44h]
21233
                and     ebx, [esp+14h]
21234
                xor     ebp, ecx
21235
                lea     edi, [eax+edi+66CA593Eh]
21236
                xor     ebp, ebx
21237
                ror     ebp, 7
21238
                add     ebp, edi
21239
                mov     eax, [esp+8]
21240
                mov     [esp+0Ch], ebp
21241
                mov     ebx, [esp+18h]
21242
                mov     ecx, [esp+1Ch]
21243
                and     ebp, ebx
21244
                mov     edx, [esp]
21245
                and     ebx, ecx
21246
                mov     edi, [esp+4]
21247
                and     ecx, edx
21248
                xor     edx, 0FFFFFFFFh
21249
                and     ebx, edi
21250
                and     edi, [esp+14h]
21251
                xor     ebx, edx
21252
                ror     eax, 0Bh
21253
                xor     ecx, edi
21254
                mov     edi, [esi+2Ch]
21255
                and     ebx, [esp+10h]
21256
                xor     ebp, ecx
21257
                lea     edi, [eax+edi-7DBCF178h]
21258
                xor     ebp, ebx
21259
                ror     ebp, 7
21260
                add     ebp, edi
21261
                mov     eax, [esp+4]
21262
                mov     [esp+8], ebp
21263
                mov     ebx, [esp+14h]
21264
                mov     ecx, [esp+18h]
21265
                and     ebp, ebx
21266
                mov     edx, [esp+1Ch]
21267
                and     ebx, ecx
21268
                mov     edi, [esp]
21269
                and     ecx, edx
21270
                xor     edx, 0FFFFFFFFh
21271
                and     ebx, edi
21272
                and     edi, [esp+10h]
21273
                xor     ebx, edx
21274
                ror     eax, 0Bh
21275
                xor     ecx, edi
21276
                mov     edi, [esi+50h]
21277
                and     ebx, [esp+0Ch]
21278
                xor     ebp, ecx
21279
                lea     edi, [eax+edi-731179E7h]
21280
                xor     ebp, ebx
21281
                ror     ebp, 7
21282
                add     ebp, edi
21283
                mov     eax, [esp]
21284
                mov     [esp+4], ebp
21285
                mov     ebx, [esp+10h]
21286
                mov     ecx, [esp+14h]
21287
                and     ebp, ebx
21288
                mov     edx, [esp+18h]
21289
                and     ebx, ecx
21290
                mov     edi, [esp+1Ch]
21291
                and     ecx, edx
21292
                xor     edx, 0FFFFFFFFh
21293
                and     ebx, edi
21294
                and     edi, [esp+0Ch]
21295
                xor     ebx, edx
21296
                ror     eax, 0Bh
21297
                xor     ecx, edi
21298
                mov     edi, [esi+74h]
21299
                and     ebx, [esp+8]
21300
                xor     ebp, ecx
21301
                lea     edi, [eax+edi+456F9FB4h]
21302
                xor     ebp, ebx
21303
                ror     ebp, 7
21304
                add     ebp, edi
21305
                mov     eax, [esp+1Ch]
21306
                mov     [esp], ebp
21307
                mov     ebx, [esp+0Ch]
21308
                mov     ecx, [esp+10h]
21309
                and     ebp, ebx
21310
                mov     edx, [esp+14h]
21311
                and     ebx, ecx
21312
                mov     edi, [esp+18h]
21313
                and     ecx, edx
21314
                xor     edx, 0FFFFFFFFh
21315
                and     ebx, edi
21316
                and     edi, [esp+8]
21317
                xor     ebx, edx
21318
                ror     eax, 0Bh
21319
                xor     ecx, edi
21320
                mov     edi, [esi+4Ch]
21321
                and     ebx, [esp+4]
21322
                xor     ebp, ecx
21323
                lea     edi, [eax+edi+7D84A5C3h]
21324
                xor     ebp, ebx
21325
                ror     ebp, 7
21326
                add     ebp, edi
21327
                mov     eax, [esp+18h]
21328
                mov     [esp+1Ch], ebp
21329
                mov     ebx, [esp+8]
21330
                mov     ecx, [esp+0Ch]
21331
                and     ebp, ebx
21332
                mov     edx, [esp+10h]
21333
                and     ebx, ecx
21334
                mov     edi, [esp+14h]
21335
                and     ecx, edx
21336
                xor     edx, 0FFFFFFFFh
21337
                and     ebx, edi
21338
                and     edi, [esp+4]
21339
                xor     ebx, edx
21340
                ror     eax, 0Bh
21341
                xor     ecx, edi
21342
                mov     edi, [esi]
21343
                and     ebx, [esp]
21344
                xor     ebp, ecx
21345
                lea     edi, [eax+edi+3B8B5EBEh]
21346
                xor     ebp, ebx
21347
                ror     ebp, 7
21348
                add     ebp, edi
21349
                mov     eax, [esp+14h]
21350
                mov     [esp+18h], ebp
21351
                mov     ebx, [esp+4]
21352
                mov     ecx, [esp+8]
21353
                and     ebp, ebx
21354
                mov     edx, [esp+0Ch]
21355
                and     ebx, ecx
21356
                mov     edi, [esp+10h]
21357
                and     ecx, edx
21358
                xor     edx, 0FFFFFFFFh
21359
                and     ebx, edi
21360
                and     edi, [esp]
21361
                xor     ebx, edx
21362
                ror     eax, 0Bh
21363
                xor     ecx, edi
21364
                mov     edi, [esi+30h]
21365
                and     ebx, [esp+1Ch]
21366
                xor     ebp, ecx
21367
                lea     edi, [eax+edi-1F908A28h]
21368
                xor     ebp, ebx
21369
                ror     ebp, 7
21370
                add     ebp, edi
21371
                mov     eax, [esp+10h]
21372
                mov     [esp+14h], ebp
21373
                mov     ebx, [esp]
21374
                mov     ecx, [esp+4]
21375
                and     ebp, ebx
21376
                mov     edx, [esp+8]
21377
                and     ebx, ecx
21378
                mov     edi, [esp+0Ch]
21379
                and     ecx, edx
21380
                xor     edx, 0FFFFFFFFh
21381
                and     ebx, edi
21382
                and     edi, [esp+1Ch]
21383
                xor     ebx, edx
21384
                ror     eax, 0Bh
21385
                xor     ecx, edi
21386
                mov     edi, [esi+1Ch]
21387
                and     ebx, [esp+18h]
21388
                xor     ebp, ecx
21389
                lea     edi, [eax+edi-7A3EDF8Dh]
21390
                xor     ebp, ebx
21391
                ror     ebp, 7
21392
                add     ebp, edi
21393
                mov     eax, [esp+0Ch]
21394
                mov     [esp+10h], ebp
21395
                mov     ebx, [esp+1Ch]
21396
                mov     ecx, [esp]
21397
                and     ebp, ebx
21398
                mov     edx, [esp+4]
21399
                and     ebx, ecx
21400
                mov     edi, [esp+8]
21401
                and     ecx, edx
21402
                xor     edx, 0FFFFFFFFh
21403
                and     ebx, edi
21404
                and     edi, [esp+18h]
21405
                xor     ebx, edx
21406
                ror     eax, 0Bh
21407
                xor     ecx, edi
21408
                mov     edi, [esi+34h]
21409
                and     ebx, [esp+14h]
21410
                xor     ebp, ecx
21411
                lea     edi, [eax+edi+401A449Fh]
21412
                xor     ebp, ebx
21413
                ror     ebp, 7
21414
                add     ebp, edi
21415
                mov     eax, [esp+8]
21416
                mov     [esp+0Ch], ebp
21417
                mov     ebx, [esp+18h]
21418
                mov     ecx, [esp+1Ch]
21419
                and     ebp, ebx
21420
                mov     edx, [esp]
21421
                and     ebx, ecx
21422
                mov     edi, [esp+4]
21423
                and     ecx, edx
21424
                xor     edx, 0FFFFFFFFh
21425
                and     ebx, edi
21426
                and     edi, [esp+14h]
21427
                xor     ebx, edx
21428
                ror     eax, 0Bh
21429
                xor     ecx, edi
21430
                mov     edi, [esi+20h]
21431
                and     ebx, [esp+10h]
21432
                xor     ebp, ecx
21433
                lea     edi, [eax+edi+56C16AA6h]
21434
                xor     ebp, ebx
21435
                ror     ebp, 7
21436
                add     ebp, edi
21437
                mov     eax, [esp+4]
21438
                mov     [esp+8], ebp
21439
                mov     ebx, [esp+14h]
21440
                mov     ecx, [esp+18h]
21441
                and     ebp, ebx
21442
                mov     edx, [esp+1Ch]
21443
                and     ebx, ecx
21444
                mov     edi, [esp]
21445
                and     ecx, edx
21446
                xor     edx, 0FFFFFFFFh
21447
                and     ebx, edi
21448
                and     edi, [esp+10h]
21449
                xor     ebx, edx
21450
                ror     eax, 0Bh
21451
                xor     ecx, edi
21452
                mov     edi, [esi+7Ch]
21453
                and     ebx, [esp+0Ch]
21454
                xor     ebp, ecx
21455
                lea     edi, [eax+edi+4ED3AA62h]
21456
                xor     ebp, ebx
21457
                ror     ebp, 7
21458
                add     ebp, edi
21459
                mov     eax, [esp]
21460
                mov     [esp+4], ebp
21461
                mov     ebx, [esp+10h]
21462
                mov     ecx, [esp+14h]
21463
                and     ebp, ebx
21464
                mov     edx, [esp+18h]
21465
                and     ebx, ecx
21466
                mov     edi, [esp+1Ch]
21467
                and     ecx, edx
21468
                xor     edx, 0FFFFFFFFh
21469
                and     ebx, edi
21470
                and     edi, [esp+0Ch]
21471
                xor     ebx, edx
21472
                ror     eax, 0Bh
21473
                xor     ecx, edi
21474
                mov     edi, [esi+28h]
21475
                and     ebx, [esp+8]
21476
                xor     ebp, ecx
21477
                lea     edi, [eax+edi+363F7706h]
21478
                xor     ebp, ebx
21479
                ror     ebp, 7
21480
                add     ebp, edi
21481
                mov     eax, [esp+1Ch]
21482
                mov     [esp], ebp
21483
                mov     ebx, [esp+0Ch]
21484
                mov     ecx, [esp+10h]
21485
                and     ebp, ebx
21486
                mov     edx, [esp+14h]
21487
                and     ebx, ecx
21488
                mov     edi, [esp+18h]
21489
                and     ecx, edx
21490
                xor     edx, 0FFFFFFFFh
21491
                and     ebx, edi
21492
                and     edi, [esp+8]
21493
                xor     ebx, edx
21494
                ror     eax, 0Bh
21495
                xor     ecx, edi
21496
                mov     edi, [esi+14h]
21497
                and     ebx, [esp+4]
21498
                xor     ebp, ecx
21499
                lea     edi, [eax+edi+1BFEDF72h]
21500
                xor     ebp, ebx
21501
                ror     ebp, 7
21502
                add     ebp, edi
21503
                mov     eax, [esp+18h]
21504
                mov     [esp+1Ch], ebp
21505
                mov     ebx, [esp+8]
21506
                mov     ecx, [esp+0Ch]
21507
                and     ebp, ebx
21508
                mov     edx, [esp+10h]
21509
                and     ebx, ecx
21510
                mov     edi, [esp+14h]
21511
                and     ecx, edx
21512
                xor     edx, 0FFFFFFFFh
21513
                and     ebx, edi
21514
                and     edi, [esp+4]
21515
                xor     ebx, edx
21516
                ror     eax, 0Bh
21517
                xor     ecx, edi
21518
                mov     edi, [esi+24h]
21519
                and     ebx, [esp]
21520
                xor     ebp, ecx
21521
                lea     edi, [eax+edi+429B023Dh]
21522
                xor     ebp, ebx
21523
                ror     ebp, 7
21524
                add     ebp, edi
21525
                mov     eax, [esp+14h]
21526
                mov     [esp+18h], ebp
21527
                mov     ebx, [esp+4]
21528
                mov     ecx, [esp+8]
21529
                and     ebp, ebx
21530
                mov     edx, [esp+0Ch]
21531
                and     ebx, ecx
21532
                mov     edi, [esp+10h]
21533
                and     ecx, edx
21534
                xor     edx, 0FFFFFFFFh
21535
                and     ebx, edi
21536
                and     edi, [esp]
21537
                xor     ebx, edx
21538
                ror     eax, 0Bh
21539
                xor     ecx, edi
21540
                mov     edi, [esi+38h]
21541
                and     ebx, [esp+1Ch]
21542
                xor     ebp, ecx
21543
                lea     edi, [eax+edi+37D0D724h]
21544
                xor     ebp, ebx
21545
                ror     ebp, 7
21546
                add     ebp, edi
21547
                mov     eax, [esp+10h]
21548
                mov     [esp+14h], ebp
21549
                mov     ebx, [esp]
21550
                mov     ecx, [esp+4]
21551
                and     ebp, ebx
21552
                mov     edx, [esp+8]
21553
                and     ebx, ecx
21554
                mov     edi, [esp+0Ch]
21555
                and     ecx, edx
21556
                xor     edx, 0FFFFFFFFh
21557
                and     ebx, edi
21558
                and     edi, [esp+1Ch]
21559
                xor     ebx, edx
21560
                ror     eax, 0Bh
21561
                xor     ecx, edi
21562
                mov     edi, [esi+78h]
21563
                and     ebx, [esp+18h]
21564
                xor     ebp, ecx
21565
                lea     edi, [eax+edi-2FF5EDB8h]
21566
                xor     ebp, ebx
21567
                ror     ebp, 7
21568
                add     ebp, edi
21569
                mov     eax, [esp+0Ch]
21570
                mov     [esp+10h], ebp
21571
                mov     ebx, [esp+1Ch]
21572
                mov     ecx, [esp]
21573
                and     ebp, ebx
21574
                mov     edx, [esp+4]
21575
                and     ebx, ecx
21576
                mov     edi, [esp+8]
21577
                and     ecx, edx
21578
                xor     edx, 0FFFFFFFFh
21579
                and     ebx, edi
21580
                and     edi, [esp+18h]
21581
                xor     ebx, edx
21582
                ror     eax, 0Bh
21583
                xor     ecx, edi
21584
                mov     edi, [esi+48h]
21585
                and     ebx, [esp+14h]
21586
                xor     ebp, ecx
21587
                lea     edi, [eax+edi-24F0152Dh]
21588
                xor     ebp, ebx
21589
                ror     ebp, 7
21590
                add     ebp, edi
21591
                mov     eax, [esp+8]
21592
                mov     [esp+0Ch], ebp
21593
                mov     ebx, [esp+18h]
21594
                mov     ecx, [esp+1Ch]
21595
                and     ebp, ebx
21596
                mov     edx, [esp]
21597
                and     ebx, ecx
21598
                mov     edi, [esp+4]
21599
                and     ecx, edx
21600
                xor     edx, 0FFFFFFFFh
21601
                and     ebx, edi
21602
                and     edi, [esp+14h]
21603
                xor     ebx, edx
21604
                ror     eax, 0Bh
21605
                xor     ecx, edi
21606
                mov     edi, [esi+18h]
21607
                and     ebx, [esp+10h]
21608
                xor     ebp, ecx
21609
                lea     edi, [eax+edi+49F1C09Bh]
21610
                xor     ebp, ebx
21611
                ror     ebp, 7
21612
                add     ebp, edi
21613
                mov     eax, [esp+4]
21614
                mov     [esp+8], ebp
21615
                mov     ebx, [esp+14h]
21616
                mov     ecx, [esp+18h]
21617
                and     ebp, ebx
21618
                mov     edx, [esp+1Ch]
21619
                and     ebx, ecx
21620
                mov     edi, [esp]
21621
                and     ecx, edx
21622
                xor     edx, 0FFFFFFFFh
21623
                and     ebx, edi
21624
                and     edi, [esp+10h]
21625
                xor     ebx, edx
21626
                ror     eax, 0Bh
21627
                xor     ecx, edi
21628
                mov     edi, [esi+70h]
21629
                and     ebx, [esp+0Ch]
21630
                xor     ebp, ecx
21631
                lea     edi, [eax+edi+75372C9h]
21632
                xor     ebp, ebx
21633
                ror     ebp, 7
21634
                add     ebp, edi
21635
                mov     eax, [esp]
21636
                mov     [esp+4], ebp
21637
                mov     ebx, [esp+10h]
21638
                mov     ecx, [esp+14h]
21639
                and     ebp, ebx
21640
                mov     edx, [esp+18h]
21641
                and     ebx, ecx
21642
                mov     edi, [esp+1Ch]
21643
                and     ecx, edx
21644
                xor     edx, 0FFFFFFFFh
21645
                and     ebx, edi
21646
                and     edi, [esp+0Ch]
21647
                xor     ebx, edx
21648
                ror     eax, 0Bh
21649
                xor     ecx, edi
21650
                mov     edi, [esi+60h]
21651
                and     ebx, [esp+8]
21652
                xor     ebp, ecx
21653
                lea     edi, [eax+edi-7F66E485h]
21654
                xor     ebp, ebx
21655
                ror     ebp, 7
21656
                add     ebp, edi
21657
                mov     eax, [esp+1Ch]
21658
                mov     [esp], ebp
21659
                mov     ebx, [esp+0Ch]
21660
                mov     ecx, [esp+10h]
21661
                and     ebp, ebx
21662
                mov     edx, [esp+14h]
21663
                and     ebx, ecx
21664
                mov     edi, [esp+18h]
21665
                and     ecx, edx
21666
                xor     edx, 0FFFFFFFFh
21667
                and     ebx, edi
21668
                and     edi, [esp+8]
21669
                xor     ebx, edx
21670
                ror     eax, 0Bh
21671
                xor     ecx, edi
21672
                mov     edi, [esi+8]
21673
                and     ebx, [esp+4]
21674
                xor     ebp, ecx
21675
                lea     edi, [eax+edi+25D479D8h]
21676
                xor     ebp, ebx
21677
                ror     ebp, 7
21678
                add     ebp, edi
21679
                mov     eax, [esp+18h]
21680
                mov     [esp+1Ch], ebp
21681
                mov     ebx, [esp+8]
21682
                mov     ecx, [esp+0Ch]
21683
                and     ebp, ebx
21684
                mov     edx, [esp+10h]
21685
                and     ebx, ecx
21686
                mov     edi, [esp+14h]
21687
                and     ecx, edx
21688
                xor     edx, 0FFFFFFFFh
21689
                and     ebx, edi
21690
                and     edi, [esp+4]
21691
                xor     ebx, edx
21692
                ror     eax, 0Bh
21693
                xor     ecx, edi
21694
                mov     edi, [esi+5Ch]
21695
                and     ebx, [esp]
21696
                xor     ebp, ecx
21697
                lea     edi, [eax+edi-9172109h]
21698
                xor     ebp, ebx
21699
                ror     ebp, 7
21700
                add     ebp, edi
21701
                mov     eax, [esp+14h]
21702
                mov     [esp+18h], ebp
21703
                mov     ebx, [esp+4]
21704
                mov     ecx, [esp+8]
21705
                and     ebp, ebx
21706
                mov     edx, [esp+0Ch]
21707
                and     ebx, ecx
21708
                mov     edi, [esp+10h]
21709
                and     ecx, edx
21710
                xor     edx, 0FFFFFFFFh
21711
                and     ebx, edi
21712
                and     edi, [esp]
21713
                xor     ebx, edx
21714
                ror     eax, 0Bh
21715
                xor     ecx, edi
21716
                mov     edi, [esi+40h]
21717
                and     ebx, [esp+1Ch]
21718
                xor     ebp, ecx
21719
                lea     edi, [eax+edi-1C01AFE6h]
21720
                xor     ebp, ebx
21721
                ror     ebp, 7
21722
                add     ebp, edi
21723
                mov     eax, [esp+10h]
21724
                mov     [esp+14h], ebp
21725
                mov     ebx, [esp]
21726
                mov     ecx, [esp+4]
21727
                and     ebp, ebx
21728
                mov     edx, [esp+8]
21729
                and     ebx, ecx
21730
                mov     edi, [esp+0Ch]
21731
                and     ecx, edx
21732
                xor     edx, 0FFFFFFFFh
21733
                and     ebx, edi
21734
                and     edi, [esp+1Ch]
21735
                xor     ebx, edx
21736
                ror     eax, 0Bh
21737
                xor     ecx, edi
21738
                mov     edi, [esi+58h]
21739
                and     ebx, [esp+18h]
21740
                xor     ebp, ecx
21741
                lea     edi, [eax+edi-4986B3C5h]
21742
                xor     ebp, ebx
21743
                ror     ebp, 7
21744
                add     ebp, edi
21745
                mov     eax, [esp+0Ch]
21746
                mov     [esp+10h], ebp
21747
                mov     ebx, [esp+1Ch]
21748
                mov     ecx, [esp]
21749
                and     ebp, ebx
21750
                mov     edx, [esp+4]
21751
                and     ebx, ecx
21752
                mov     edi, [esp+8]
21753
                and     ecx, edx
21754
                xor     edx, 0FFFFFFFFh
21755
                and     ebx, edi
21756
                and     edi, [esp+18h]
21757
                xor     ebx, edx
21758
                ror     eax, 0Bh
21759
                xor     ecx, edi
21760
                mov     edi, [esi+10h]
21761
                and     ebx, [esp+14h]
21762
                xor     ebp, ecx
21763
                lea     edi, [eax+edi-68931F43h]
21764
                xor     ebp, ebx
21765
                ror     ebp, 7
21766
                add     ebp, edi
21767
                mov     eax, [esp+8]
21768
                mov     [esp+0Ch], ebp
21769
                mov     ebx, [esp+18h]
21770
                mov     ecx, [esp+1Ch]
21771
                and     ebp, ebx
21772
                mov     edx, [esp]
21773
                and     ebx, ecx
21774
                mov     edi, [esp+4]
21775
                and     ecx, edx
21776
                xor     edx, 0FFFFFFFFh
21777
                and     ebx, edi
21778
                and     edi, [esp+14h]
21779
                xor     ebx, edx
21780
                ror     eax, 0Bh
21781
                xor     ecx, edi
21782
                mov     edi, [esi+4]
21783
                and     ebx, [esp+10h]
21784
                xor     ebp, ecx
21785
                lea     edi, [eax+edi+4C006BAh]
21786
                xor     ebp, ebx
21787
                ror     ebp, 7
21788
                add     ebp, edi
21789
                mov     eax, [esp+4]
21790
                mov     [esp+8], ebp
21791
                mov     ebx, [esp+14h]
21792
                mov     ecx, [esp+18h]
21793
                and     ebp, ebx
21794
                mov     edx, [esp+1Ch]
21795
                and     ebx, ecx
21796
                mov     edi, [esp]
21797
                and     ecx, edx
21798
                xor     edx, 0FFFFFFFFh
21799
                and     ebx, edi
21800
                and     edi, [esp+10h]
21801
                xor     ebx, edx
21802
                ror     eax, 0Bh
21803
                xor     ecx, edi
21804
                mov     edi, [esi+64h]
21805
                and     ebx, [esp+0Ch]
21806
                xor     ebp, ecx
21807
                lea     edi, [eax+edi-3E56B04Ah]
21808
                xor     ebp, ebx
21809
                ror     ebp, 7
21810
                add     ebp, edi
21811
                mov     eax, [esp]
21812
                mov     [esp+4], ebp
21813
                mov     ebx, [esp+10h]
21814
                mov     ecx, [esp+14h]
21815
                and     ebp, ebx
21816
                mov     edx, [esp+18h]
21817
                and     ebx, ecx
21818
                mov     edi, [esp+1Ch]
21819
                and     ecx, edx
21820
                xor     edx, 0FFFFFFFFh
21821
                and     ebx, edi
21822
                and     edi, [esp+0Ch]
21823
                xor     ebx, edx
21824
                ror     eax, 0Bh
21825
                xor     ecx, edi
21826
                mov     edi, [esi+3Ch]
21827
                and     ebx, [esp+8]
21828
                xor     ebp, ecx
21829
                lea     edi, [eax+edi+409F60C4h]
21830
                xor     ebp, ebx
21831
                ror     ebp, 7
21832
                add     ebp, edi
21833
                mov     eax, [esp+1Ch]
21834
                mov     [esp], ebp
21835
                mov     edi, [esp+24h]
21836
                mov     eax, [esp]
21837
                mov     ebx, [esp+4]
21838
                add     [edi], eax
21839
                add     [edi+4], ebx
21840
                mov     ecx, [esp+8]
21841
                mov     edx, [esp+0Ch]
21842
                add     [edi+8], ecx
21843
                add     [edi+0Ch], edx
21844
                mov     eax, [esp+10h]
21845
                mov     ebx, [esp+14h]
21846
                add     [edi+10h], eax
21847
                add     [edi+14h], ebx
21848
                mov     ebp, [esp+28h]
21849
                mov     ecx, [esp+18h]
21850
                mov     edx, [esp+1Ch]
21851
                mov     esp, ebp
21852
                add     [edi+18h], ecx
21853
                add     [edi+1Ch], edx
21854
                pop     ebp
21855
                pop     edi
21856
                pop     esi
21857
                pop     ebx
21858
end;
21859
{$ENDIF}
21860
21861
{$IFDEF THash_Tiger_asm}
21862
procedure THash_Tiger.DoTransform(Buffer: PUInt32Array);
21863
asm
21864
                push    ebx
21865
                push    esi
21866
                push    edi
21867
                lea     edi, [eax].THash_Tiger.FDigest
21868
                mov     esi, edx
21869
                push    ebp
21870
                mov     ebp, [eax].THash_Tiger.FRounds
21871
                lea     eax, Tiger_Data
21872
21873
                mov     ecx, esp
21874
                add     esp, 0FFFFFF94h
21875
                and     esp, 0FFFFFFC0h
21876
                sub     ebp, 3
21877
                mov     [esp+58h], esi
21878
                mov     [esp+5Ch], edi
21879
                mov     [esp+60h], ebp
21880
                mov     [esp+64h], eax
21881
                mov     [esp+68h], ecx
21882
                mov     eax, [esi]
21883
                mov     ebx, [esi+4]
21884
                mov     [esp], eax
21885
                mov     [esp+4], ebx
21886
                mov     ecx, [esi+8]
21887
                mov     edx, [esi+0Ch]
21888
                mov     [esp+8], ecx
21889
                mov     [esp+0Ch], edx
21890
                mov     eax, [esi+10h]
21891
                mov     ebx, [esi+14h]
21892
                mov     [esp+10h], eax
21893
                mov     [esp+14h], ebx
21894
                mov     ecx, [esi+18h]
21895
                mov     edx, [esi+1Ch]
21896
                mov     [esp+18h], ecx
21897
                mov     [esp+1Ch], edx
21898
                mov     eax, [esi+20h]
21899
                mov     ebx, [esi+24h]
21900
                mov     [esp+20h], eax
21901
                mov     [esp+24h], ebx
21902
                mov     ecx, [esi+28h]
21903
                mov     edx, [esi+2Ch]
21904
                mov     [esp+28h], ecx
21905
                mov     [esp+2Ch], edx
21906
                mov     eax, [esi+30h]
21907
                mov     ebx, [esi+34h]
21908
                mov     [esp+30h], eax
21909
                mov     [esp+34h], ebx
21910
                mov     ecx, [esi+38h]
21911
                mov     edx, [esi+3Ch]
21912
                mov     [esp+38h], ecx
21913
                mov     [esp+3Ch], edx
21914
                mov     eax, [edi]
21915
                mov     ebx, [edi+4]
21916
                mov     [esp+40h], eax
21917
                mov     [esp+44h], ebx
21918
                mov     ecx, [edi+8]
21919
                mov     edx, [edi+0Ch]
21920
                mov     [esp+48h], ecx
21921
                mov     [esp+4Ch], edx
21922
                mov     eax, [edi+10h]
21923
                mov     ebx, [edi+14h]
21924
                mov     [esp+50h], eax
21925
                mov     [esp+54h], ebx
21926
                mov     esi, [esp+64h]
21927
                mov     eax, [esp]
21928
                mov     ebx, [esp+4]
21929
                mov     ecx, [esp+50h]
21930
                mov     edx, [esp+54h]
21931
                xor     eax, ecx
21932
                xor     ebx, edx
21933
                mov     edi, eax
21934
                mov     [esp+50h], eax
21935
                shr     eax, 0Dh
21936
                mov     ebp, ebx
21937
                and     edi, 0FFh
21938
                mov     [esp+54h], ebx
21939
                shl     edi, 3
21940
                and     ebp, 0FFh
21941
                shr     ebx, 0Dh
21942
                and     eax, 7F8h
21943
                shl     ebp, 3
21944
                mov     ecx, [esi+edi]
21945
                mov     edx, [esi+edi+4]
21946
                xor     ecx, [esi+eax+800h]
21947
                xor     edx, [esi+eax+804h]
21948
                and     ebx, 7F8h
21949
                xor     ecx, [esi+ebp+1000h]
21950
                xor     edx, [esi+ebp+1004h]
21951
                xor     ecx, [esi+ebx+1800h]
21952
                xor     edx, [esi+ebx+1804h]
21953
                mov     edi, [esp+40h]
21954
                mov     ebp, [esp+44h]
21955
                sub     edi, ecx
21956
                mov     eax, [esp+50h]
21957
                sbb     ebp, edx
21958
                mov     ebx, [esp+54h]
21959
                mov     [esp+40h], edi
21960
                mov     edi, eax
21961
                shr     eax, 5
21962
                mov     [esp+44h], ebp
21963
                shr     edi, 15h
21964
                mov     ebp, ebx
21965
                shr     ebx, 5
21966
                and     eax, 7F8h
21967
                shr     ebp, 15h
21968
                and     edi, 7F8h
21969
                and     ebx, 7F8h
21970
                mov     ecx, [esi+eax+1800h]
21971
                mov     edx, [esi+eax+1804h]
21972
                xor     ecx, [esi+edi+1000h]
21973
                and     ebp, 7F8h
21974
                xor     edx, [esi+edi+1004h]
21975
                xor     ecx, [esi+ebx+800h]
21976
                xor     edx, [esi+ebx+804h]
21977
                xor     ecx, [esi+ebp]
21978
                xor     edx, [esi+ebp+4]
21979
                mov     eax, [esp+48h]
21980
                mov     ebx, [esp+4Ch]
21981
                add     eax, ecx
21982
                adc     ebx, edx
21983
                mov     ecx, eax
21984
                shr     ecx, 1Eh
21985
                mov     ebp, ebx
21986
                shl     ebx, 2
21987
                mov     edi, eax
21988
                shl     eax, 2
21989
                or      ebx, ecx
21990
                add     eax, edi
21991
                adc     ebx, ebp
21992
                mov     [esp+48h], eax
21993
                mov     [esp+4Ch], ebx
21994
                mov     eax, [esp+8]
21995
                mov     ebx, [esp+0Ch]
21996
                mov     ecx, [esp+40h]
21997
                mov     edx, [esp+44h]
21998
                xor     eax, ecx
21999
                xor     ebx, edx
22000
                mov     edi, eax
22001
                mov     [esp+40h], eax
22002
                shr     eax, 0Dh
22003
                mov     ebp, ebx
22004
                and     edi, 0FFh
22005
                mov     [esp+44h], ebx
22006
                shl     edi, 3
22007
                and     ebp, 0FFh
22008
                shr     ebx, 0Dh
22009
                and     eax, 7F8h
22010
                shl     ebp, 3
22011
                mov     ecx, [esi+edi]
22012
                mov     edx, [esi+edi+4]
22013
                xor     ecx, [esi+eax+800h]
22014
                xor     edx, [esi+eax+804h]
22015
                and     ebx, 7F8h
22016
                xor     ecx, [esi+ebp+1000h]
22017
                xor     edx, [esi+ebp+1004h]
22018
                xor     ecx, [esi+ebx+1800h]
22019
                xor     edx, [esi+ebx+1804h]
22020
                mov     edi, [esp+48h]
22021
                mov     ebp, [esp+4Ch]
22022
                sub     edi, ecx
22023
                mov     eax, [esp+40h]
22024
                sbb     ebp, edx
22025
                mov     ebx, [esp+44h]
22026
                mov     [esp+48h], edi
22027
                mov     edi, eax
22028
                shr     eax, 5
22029
                mov     [esp+4Ch], ebp
22030
                shr     edi, 15h
22031
                mov     ebp, ebx
22032
                shr     ebx, 5
22033
                and     eax, 7F8h
22034
                shr     ebp, 15h
22035
                and     edi, 7F8h
22036
                and     ebx, 7F8h
22037
                mov     ecx, [esi+eax+1800h]
22038
                mov     edx, [esi+eax+1804h]
22039
                xor     ecx, [esi+edi+1000h]
22040
                and     ebp, 7F8h
22041
                xor     edx, [esi+edi+1004h]
22042
                xor     ecx, [esi+ebx+800h]
22043
                xor     edx, [esi+ebx+804h]
22044
                xor     ecx, [esi+ebp]
22045
                xor     edx, [esi+ebp+4]
22046
                mov     eax, [esp+50h]
22047
                mov     ebx, [esp+54h]
22048
                add     eax, ecx
22049
                adc     ebx, edx
22050
                mov     ecx, eax
22051
                shr     ecx, 1Eh
22052
                mov     ebp, ebx
22053
                shl     ebx, 2
22054
                mov     edi, eax
22055
                shl     eax, 2
22056
                or      ebx, ecx
22057
                add     eax, edi
22058
                adc     ebx, ebp
22059
                mov     [esp+50h], eax
22060
                mov     [esp+54h], ebx
22061
                mov     eax, [esp+10h]
22062
                mov     ebx, [esp+14h]
22063
                mov     ecx, [esp+48h]
22064
                mov     edx, [esp+4Ch]
22065
                xor     eax, ecx
22066
                xor     ebx, edx
22067
                mov     edi, eax
22068
                mov     [esp+48h], eax
22069
                shr     eax, 0Dh
22070
                mov     ebp, ebx
22071
                and     edi, 0FFh
22072
                mov     [esp+4Ch], ebx
22073
                shl     edi, 3
22074
                and     ebp, 0FFh
22075
                shr     ebx, 0Dh
22076
                and     eax, 7F8h
22077
                shl     ebp, 3
22078
                mov     ecx, [esi+edi]
22079
                mov     edx, [esi+edi+4]
22080
                xor     ecx, [esi+eax+800h]
22081
                xor     edx, [esi+eax+804h]
22082
                and     ebx, 7F8h
22083
                xor     ecx, [esi+ebp+1000h]
22084
                xor     edx, [esi+ebp+1004h]
22085
                xor     ecx, [esi+ebx+1800h]
22086
                xor     edx, [esi+ebx+1804h]
22087
                mov     edi, [esp+50h]
22088
                mov     ebp, [esp+54h]
22089
                sub     edi, ecx
22090
                mov     eax, [esp+48h]
22091
                sbb     ebp, edx
22092
                mov     ebx, [esp+4Ch]
22093
                mov     [esp+50h], edi
22094
                mov     edi, eax
22095
                shr     eax, 5
22096
                mov     [esp+54h], ebp
22097
                shr     edi, 15h
22098
                mov     ebp, ebx
22099
                shr     ebx, 5
22100
                and     eax, 7F8h
22101
                shr     ebp, 15h
22102
                and     edi, 7F8h
22103
                and     ebx, 7F8h
22104
                mov     ecx, [esi+eax+1800h]
22105
                mov     edx, [esi+eax+1804h]
22106
                xor     ecx, [esi+edi+1000h]
22107
                and     ebp, 7F8h
22108
                xor     edx, [esi+edi+1004h]
22109
                xor     ecx, [esi+ebx+800h]
22110
                xor     edx, [esi+ebx+804h]
22111
                xor     ecx, [esi+ebp]
22112
                xor     edx, [esi+ebp+4]
22113
                mov     eax, [esp+40h]
22114
                mov     ebx, [esp+44h]
22115
                add     eax, ecx
22116
                adc     ebx, edx
22117
                mov     ecx, eax
22118
                shr     ecx, 1Eh
22119
                mov     ebp, ebx
22120
                shl     ebx, 2
22121
                mov     edi, eax
22122
                shl     eax, 2
22123
                or      ebx, ecx
22124
                add     eax, edi
22125
                adc     ebx, ebp
22126
                mov     [esp+40h], eax
22127
                mov     [esp+44h], ebx
22128
                mov     eax, [esp+18h]
22129
                mov     ebx, [esp+1Ch]
22130
                mov     ecx, [esp+50h]
22131
                mov     edx, [esp+54h]
22132
                xor     eax, ecx
22133
                xor     ebx, edx
22134
                mov     edi, eax
22135
                mov     [esp+50h], eax
22136
                shr     eax, 0Dh
22137
                mov     ebp, ebx
22138
                and     edi, 0FFh
22139
                mov     [esp+54h], ebx
22140
                shl     edi, 3
22141
                and     ebp, 0FFh
22142
                shr     ebx, 0Dh
22143
                and     eax, 7F8h
22144
                shl     ebp, 3
22145
                mov     ecx, [esi+edi]
22146
                mov     edx, [esi+edi+4]
22147
                xor     ecx, [esi+eax+800h]
22148
                xor     edx, [esi+eax+804h]
22149
                and     ebx, 7F8h
22150
                xor     ecx, [esi+ebp+1000h]
22151
                xor     edx, [esi+ebp+1004h]
22152
                xor     ecx, [esi+ebx+1800h]
22153
                xor     edx, [esi+ebx+1804h]
22154
                mov     edi, [esp+40h]
22155
                mov     ebp, [esp+44h]
22156
                sub     edi, ecx
22157
                mov     eax, [esp+50h]
22158
                sbb     ebp, edx
22159
                mov     ebx, [esp+54h]
22160
                mov     [esp+40h], edi
22161
                mov     edi, eax
22162
                shr     eax, 5
22163
                mov     [esp+44h], ebp
22164
                shr     edi, 15h
22165
                mov     ebp, ebx
22166
                shr     ebx, 5
22167
                and     eax, 7F8h
22168
                shr     ebp, 15h
22169
                and     edi, 7F8h
22170
                and     ebx, 7F8h
22171
                mov     ecx, [esi+eax+1800h]
22172
                mov     edx, [esi+eax+1804h]
22173
                xor     ecx, [esi+edi+1000h]
22174
                and     ebp, 7F8h
22175
                xor     edx, [esi+edi+1004h]
22176
                xor     ecx, [esi+ebx+800h]
22177
                xor     edx, [esi+ebx+804h]
22178
                xor     ecx, [esi+ebp]
22179
                xor     edx, [esi+ebp+4]
22180
                mov     eax, [esp+48h]
22181
                mov     ebx, [esp+4Ch]
22182
                add     eax, ecx
22183
                adc     ebx, edx
22184
                mov     ecx, eax
22185
                shr     ecx, 1Eh
22186
                mov     ebp, ebx
22187
                shl     ebx, 2
22188
                mov     edi, eax
22189
                shl     eax, 2
22190
                or      ebx, ecx
22191
                add     eax, edi
22192
                adc     ebx, ebp
22193
                mov     [esp+48h], eax
22194
                mov     [esp+4Ch], ebx
22195
                mov     eax, [esp+20h]
22196
                mov     ebx, [esp+24h]
22197
                mov     ecx, [esp+40h]
22198
                mov     edx, [esp+44h]
22199
                xor     eax, ecx
22200
                xor     ebx, edx
22201
                mov     edi, eax
22202
                mov     [esp+40h], eax
22203
                shr     eax, 0Dh
22204
                mov     ebp, ebx
22205
                and     edi, 0FFh
22206
                mov     [esp+44h], ebx
22207
                shl     edi, 3
22208
                and     ebp, 0FFh
22209
                shr     ebx, 0Dh
22210
                and     eax, 7F8h
22211
                shl     ebp, 3
22212
                mov     ecx, [esi+edi]
22213
                mov     edx, [esi+edi+4]
22214
                xor     ecx, [esi+eax+800h]
22215
                xor     edx, [esi+eax+804h]
22216
                and     ebx, 7F8h
22217
                xor     ecx, [esi+ebp+1000h]
22218
                xor     edx, [esi+ebp+1004h]
22219
                xor     ecx, [esi+ebx+1800h]
22220
                xor     edx, [esi+ebx+1804h]
22221
                mov     edi, [esp+48h]
22222
                mov     ebp, [esp+4Ch]
22223
                sub     edi, ecx
22224
                mov     eax, [esp+40h]
22225
                sbb     ebp, edx
22226
                mov     ebx, [esp+44h]
22227
                mov     [esp+48h], edi
22228
                mov     edi, eax
22229
                shr     eax, 5
22230
                mov     [esp+4Ch], ebp
22231
                shr     edi, 15h
22232
                mov     ebp, ebx
22233
                shr     ebx, 5
22234
                and     eax, 7F8h
22235
                shr     ebp, 15h
22236
                and     edi, 7F8h
22237
                and     ebx, 7F8h
22238
                mov     ecx, [esi+eax+1800h]
22239
                mov     edx, [esi+eax+1804h]
22240
                xor     ecx, [esi+edi+1000h]
22241
                and     ebp, 7F8h
22242
                xor     edx, [esi+edi+1004h]
22243
                xor     ecx, [esi+ebx+800h]
22244
                xor     edx, [esi+ebx+804h]
22245
                xor     ecx, [esi+ebp]
22246
                xor     edx, [esi+ebp+4]
22247
                mov     eax, [esp+50h]
22248
                mov     ebx, [esp+54h]
22249
                add     eax, ecx
22250
                adc     ebx, edx
22251
                mov     ecx, eax
22252
                shr     ecx, 1Eh
22253
                mov     ebp, ebx
22254
                shl     ebx, 2
22255
                mov     edi, eax
22256
                shl     eax, 2
22257
                or      ebx, ecx
22258
                add     eax, edi
22259
                adc     ebx, ebp
22260
                mov     [esp+50h], eax
22261
                mov     [esp+54h], ebx
22262
                mov     eax, [esp+28h]
22263
                mov     ebx, [esp+2Ch]
22264
                mov     ecx, [esp+48h]
22265
                mov     edx, [esp+4Ch]
22266
                xor     eax, ecx
22267
                xor     ebx, edx
22268
                mov     edi, eax
22269
                mov     [esp+48h], eax
22270
                shr     eax, 0Dh
22271
                mov     ebp, ebx
22272
                and     edi, 0FFh
22273
                mov     [esp+4Ch], ebx
22274
                shl     edi, 3
22275
                and     ebp, 0FFh
22276
                shr     ebx, 0Dh
22277
                and     eax, 7F8h
22278
                shl     ebp, 3
22279
                mov     ecx, [esi+edi]
22280
                mov     edx, [esi+edi+4]
22281
                xor     ecx, [esi+eax+800h]
22282
                xor     edx, [esi+eax+804h]
22283
                and     ebx, 7F8h
22284
                xor     ecx, [esi+ebp+1000h]
22285
                xor     edx, [esi+ebp+1004h]
22286
                xor     ecx, [esi+ebx+1800h]
22287
                xor     edx, [esi+ebx+1804h]
22288
                mov     edi, [esp+50h]
22289
                mov     ebp, [esp+54h]
22290
                sub     edi, ecx
22291
                mov     eax, [esp+48h]
22292
                sbb     ebp, edx
22293
                mov     ebx, [esp+4Ch]
22294
                mov     [esp+50h], edi
22295
                mov     edi, eax
22296
                shr     eax, 5
22297
                mov     [esp+54h], ebp
22298
                shr     edi, 15h
22299
                mov     ebp, ebx
22300
                shr     ebx, 5
22301
                and     eax, 7F8h
22302
                shr     ebp, 15h
22303
                and     edi, 7F8h
22304
                and     ebx, 7F8h
22305
                mov     ecx, [esi+eax+1800h]
22306
                mov     edx, [esi+eax+1804h]
22307
                xor     ecx, [esi+edi+1000h]
22308
                and     ebp, 7F8h
22309
                xor     edx, [esi+edi+1004h]
22310
                xor     ecx, [esi+ebx+800h]
22311
                xor     edx, [esi+ebx+804h]
22312
                xor     ecx, [esi+ebp]
22313
                xor     edx, [esi+ebp+4]
22314
                mov     eax, [esp+40h]
22315
                mov     ebx, [esp+44h]
22316
                add     eax, ecx
22317
                adc     ebx, edx
22318
                mov     ecx, eax
22319
                shr     ecx, 1Eh
22320
                mov     ebp, ebx
22321
                shl     ebx, 2
22322
                mov     edi, eax
22323
                shl     eax, 2
22324
                or      ebx, ecx
22325
                add     eax, edi
22326
                adc     ebx, ebp
22327
                mov     [esp+40h], eax
22328
                mov     [esp+44h], ebx
22329
                mov     eax, [esp+30h]
22330
                mov     ebx, [esp+34h]
22331
                mov     ecx, [esp+50h]
22332
                mov     edx, [esp+54h]
22333
                xor     eax, ecx
22334
                xor     ebx, edx
22335
                mov     edi, eax
22336
                mov     [esp+50h], eax
22337
                shr     eax, 0Dh
22338
                mov     ebp, ebx
22339
                and     edi, 0FFh
22340
                mov     [esp+54h], ebx
22341
                shl     edi, 3
22342
                and     ebp, 0FFh
22343
                shr     ebx, 0Dh
22344
                and     eax, 7F8h
22345
                shl     ebp, 3
22346
                mov     ecx, [esi+edi]
22347
                mov     edx, [esi+edi+4]
22348
                xor     ecx, [esi+eax+800h]
22349
                xor     edx, [esi+eax+804h]
22350
                and     ebx, 7F8h
22351
                xor     ecx, [esi+ebp+1000h]
22352
                xor     edx, [esi+ebp+1004h]
22353
                xor     ecx, [esi+ebx+1800h]
22354
                xor     edx, [esi+ebx+1804h]
22355
                mov     edi, [esp+40h]
22356
                mov     ebp, [esp+44h]
22357
                sub     edi, ecx
22358
                mov     eax, [esp+50h]
22359
                sbb     ebp, edx
22360
                mov     ebx, [esp+54h]
22361
                mov     [esp+40h], edi
22362
                mov     edi, eax
22363
                shr     eax, 5
22364
                mov     [esp+44h], ebp
22365
                shr     edi, 15h
22366
                mov     ebp, ebx
22367
                shr     ebx, 5
22368
                and     eax, 7F8h
22369
                shr     ebp, 15h
22370
                and     edi, 7F8h
22371
                and     ebx, 7F8h
22372
                mov     ecx, [esi+eax+1800h]
22373
                mov     edx, [esi+eax+1804h]
22374
                xor     ecx, [esi+edi+1000h]
22375
                and     ebp, 7F8h
22376
                xor     edx, [esi+edi+1004h]
22377
                xor     ecx, [esi+ebx+800h]
22378
                xor     edx, [esi+ebx+804h]
22379
                xor     ecx, [esi+ebp]
22380
                xor     edx, [esi+ebp+4]
22381
                mov     eax, [esp+48h]
22382
                mov     ebx, [esp+4Ch]
22383
                add     eax, ecx
22384
                adc     ebx, edx
22385
                mov     ecx, eax
22386
                shr     ecx, 1Eh
22387
                mov     ebp, ebx
22388
                shl     ebx, 2
22389
                mov     edi, eax
22390
                shl     eax, 2
22391
                or      ebx, ecx
22392
                add     eax, edi
22393
                adc     ebx, ebp
22394
                mov     [esp+48h], eax
22395
                mov     [esp+4Ch], ebx
22396
                mov     eax, [esp+38h]
22397
                mov     ebx, [esp+3Ch]
22398
                mov     ecx, [esp+40h]
22399
                mov     edx, [esp+44h]
22400
                xor     eax, ecx
22401
                xor     ebx, edx
22402
                mov     edi, eax
22403
                mov     [esp+40h], eax
22404
                shr     eax, 0Dh
22405
                mov     ebp, ebx
22406
                and     edi, 0FFh
22407
                mov     [esp+44h], ebx
22408
                shl     edi, 3
22409
                and     ebp, 0FFh
22410
                shr     ebx, 0Dh
22411
                and     eax, 7F8h
22412
                shl     ebp, 3
22413
                mov     ecx, [esi+edi]
22414
                mov     edx, [esi+edi+4]
22415
                xor     ecx, [esi+eax+800h]
22416
                xor     edx, [esi+eax+804h]
22417
                and     ebx, 7F8h
22418
                xor     ecx, [esi+ebp+1000h]
22419
                xor     edx, [esi+ebp+1004h]
22420
                xor     ecx, [esi+ebx+1800h]
22421
                xor     edx, [esi+ebx+1804h]
22422
                mov     edi, [esp+48h]
22423
                mov     ebp, [esp+4Ch]
22424
                sub     edi, ecx
22425
                mov     eax, [esp+40h]
22426
                sbb     ebp, edx
22427
                mov     ebx, [esp+44h]
22428
                mov     [esp+48h], edi
22429
                mov     edi, eax
22430
                shr     eax, 5
22431
                mov     [esp+4Ch], ebp
22432
                shr     edi, 15h
22433
                mov     ebp, ebx
22434
                shr     ebx, 5
22435
                and     eax, 7F8h
22436
                shr     ebp, 15h
22437
                and     edi, 7F8h
22438
                and     ebx, 7F8h
22439
                mov     ecx, [esi+eax+1800h]
22440
                mov     edx, [esi+eax+1804h]
22441
                xor     ecx, [esi+edi+1000h]
22442
                and     ebp, 7F8h
22443
                xor     edx, [esi+edi+1004h]
22444
                xor     ecx, [esi+ebx+800h]
22445
                xor     edx, [esi+ebx+804h]
22446
                xor     ecx, [esi+ebp]
22447
                xor     edx, [esi+ebp+4]
22448
                mov     eax, [esp+50h]
22449
                mov     ebx, [esp+54h]
22450
                add     eax, ecx
22451
                adc     ebx, edx
22452
                mov     ecx, eax
22453
                shr     ecx, 1Eh
22454
                mov     ebp, ebx
22455
                shl     ebx, 2
22456
                mov     edi, eax
22457
                shl     eax, 2
22458
                or      ebx, ecx
22459
                add     eax, edi
22460
                adc     ebx, ebp
22461
                mov     [esp+50h], eax
22462
                mov     [esp+54h], ebx
22463
                mov     eax, [esp+38h]
22464
                mov     ebx, [esp+3Ch]
22465
                xor     eax, 0A5A5A5A5h
22466
                xor     ebx, 0A5A5A5A5h
22467
                mov     ecx, [esp]
22468
                mov     edx, [esp+4]
22469
                sub     ecx, eax
22470
                sbb     edx, ebx
22471
                mov     [esp], ecx
22472
                mov     [esp+4], edx
22473
                mov     eax, [esp+8]
22474
                mov     ebx, [esp+0Ch]
22475
                xor     eax, ecx
22476
                xor     ebx, edx
22477
                mov     [esp+8], eax
22478
                mov     edi, eax
22479
                mov     esi, eax
22480
                shr     edi, 0Dh
22481
                xor     eax, 0FFFFFFFFh
22482
                mov     [esp+0Ch], ebx
22483
                mov     ecx, [esp+10h]
22484
                shl     eax, 13h
22485
                mov     ebp, ebx
22486
                shl     ebx, 13h
22487
                mov     edx, [esp+14h]
22488
                add     esi, ecx
22489
                mov     ecx, [esp+20h]
22490
                adc     ebp, edx
22491
                or      edi, ebx
22492
                mov     [esp+10h], esi
22493
                xor     esi, eax
22494
                mov     [esp+14h], ebp
22495
                mov     eax, [esp+18h]
22496
                xor     ebp, 0FFFFFFFFh
22497
                mov     ebx, [esp+1Ch]
22498
                xor     ebp, edi
22499
                sub     eax, esi
22500
                sbb     ebx, ebp
22501
                mov     edx, [esp+24h]
22502
                mov     [esp+18h], eax
22503
                xor     eax, ecx
22504
                mov     [esp+1Ch], ebx
22505
                xor     ebx, edx
22506
                mov     ecx, [esp+28h]
22507
                mov     edx, [esp+2Ch]
22508
                mov     edi, ebx
22509
                mov     ebp, ebx
22510
                mov     [esp+20h], eax
22511
                xor     ebp, 0FFFFFFFFh
22512
                shl     ebx, 9
22513
                add     ecx, eax
22514
                adc     edx, edi
22515
                mov     [esp+24h], edi
22516
                shr     ebp, 17h
22517
                mov     [esp+28h], ecx
22518
                shr     eax, 17h
22519
                xor     ecx, 0FFFFFFFFh
22520
                or      ebx, eax
22521
                mov     [esp+2Ch], edx
22522
                mov     eax, [esp+30h]
22523
                xor     ecx, ebx
22524
                mov     ebx, [esp+34h]
22525
                xor     edx, ebp
22526
                mov     edi, [esp+38h]
22527
                sub     eax, ecx
22528
                mov     ebp, [esp+3Ch]
22529
                mov     [esp+30h], eax
22530
                sbb     ebx, edx
22531
                xor     edi, eax
22532
                xor     ebp, ebx
22533
                mov     [esp+34h], ebx
22534
                mov     eax, [esp]
22535
                mov     ecx, edi
22536
                xor     edi, 0FFFFFFFFh
22537
                mov     ebx, [esp+4]
22538
                shl     edi, 13h
22539
                mov     [esp+38h], ecx
22540
                add     eax, ecx
22541
                mov     [esp+3Ch], ebp
22542
                adc     ebx, ebp
22543
                xor     edi, eax
22544
                shr     ecx, 0Dh
22545
                mov     [esp], eax
22546
                shl     ebp, 13h
22547
                mov     [esp+4], ebx
22548
                mov     esi, [esp+8]
22549
                xor     ebx, 0FFFFFFFFh
22550
                or      ebp, ecx
22551
                mov     edx, [esp+0Ch]
22552
                xor     ebp, ebx
22553
                sub     esi, edi
22554
                mov     eax, [esp+10h]
22555
                mov     ebx, [esp+14h]
22556
                sbb     edx, ebp
22557
                mov     [esp+8], esi
22558
                xor     eax, esi
22559
                mov     [esp+0Ch], edx
22560
                mov     edi, [esp+18h]
22561
                mov     ebp, [esp+1Ch]
22562
                xor     ebx, edx
22563
                mov     [esp+10h], eax
22564
                add     edi, eax
22565
                mov     esi, ebx
22566
                adc     ebp, ebx
22567
                mov     [esp+14h], ebx
22568
                shr     eax, 17h
22569
                mov     ecx, [esp+20h]
22570
                xor     ebx, 0FFFFFFFFh
22571
                mov     edx, [esp+24h]
22572
                shl     esi, 9
22573
                mov     [esp+18h], edi
22574
                or      eax, esi
22575
                xor     edi, 0FFFFFFFFh
22576
                shr     ebx, 17h
22577
                mov     [esp+1Ch], ebp
22578
                xor     eax, edi
22579
                mov     edi, [esp+28h]
22580
                xor     ebx, ebp
22581
                sub     ecx, eax
22582
                mov     ebp, [esp+2Ch]
22583
                mov     [esp+20h], ecx
22584
                sbb     edx, ebx
22585
                xor     edi, ecx
22586
                mov     [esp+24h], edx
22587
                xor     ebp, edx
22588
                mov     eax, [esp+30h]
22589
                mov     ebx, [esp+34h]
22590
                mov     [esp+28h], edi
22591
                add     eax, edi
22592
                mov     [esp+2Ch], ebp
22593
                mov     ecx, [esp+38h]
22594
                adc     ebx, ebp
22595
                mov     edx, [esp+3Ch]
22596
                mov     [esp+30h], eax
22597
                xor     eax, 89ABCDEFh
22598
                mov     [esp+34h], ebx
22599
                xor     ebx, 1234567h
22600
                sub     ecx, eax
22601
                sbb     edx, ebx
22602
                mov     [esp+38h], ecx
22603
                mov     [esp+3Ch], edx
22604
                mov     esi, [esp+64h]
22605
                mov     eax, [esp]
22606
                mov     ebx, [esp+4]
22607
                mov     ecx, [esp+48h]
22608
                mov     edx, [esp+4Ch]
22609
                xor     eax, ecx
22610
                xor     ebx, edx
22611
                mov     edi, eax
22612
                mov     [esp+48h], eax
22613
                shr     eax, 0Dh
22614
                mov     ebp, ebx
22615
                and     edi, 0FFh
22616
                mov     [esp+4Ch], ebx
22617
                shl     edi, 3
22618
                and     ebp, 0FFh
22619
                shr     ebx, 0Dh
22620
                and     eax, 7F8h
22621
                shl     ebp, 3
22622
                mov     ecx, [esi+edi]
22623
                mov     edx, [esi+edi+4]
22624
                xor     ecx, [esi+eax+800h]
22625
                xor     edx, [esi+eax+804h]
22626
                and     ebx, 7F8h
22627
                xor     ecx, [esi+ebp+1000h]
22628
                xor     edx, [esi+ebp+1004h]
22629
                xor     ecx, [esi+ebx+1800h]
22630
                xor     edx, [esi+ebx+1804h]
22631
                mov     edi, [esp+50h]
22632
                mov     ebp, [esp+54h]
22633
                sub     edi, ecx
22634
                mov     eax, [esp+48h]
22635
                sbb     ebp, edx
22636
                mov     ebx, [esp+4Ch]
22637
                mov     [esp+50h], edi
22638
                mov     edi, eax
22639
                shr     eax, 5
22640
                mov     [esp+54h], ebp
22641
                shr     edi, 15h
22642
                mov     ebp, ebx
22643
                shr     ebx, 5
22644
                and     eax, 7F8h
22645
                shr     ebp, 15h
22646
                and     edi, 7F8h
22647
                and     ebx, 7F8h
22648
                mov     ecx, [esi+eax+1800h]
22649
                mov     edx, [esi+eax+1804h]
22650
                xor     ecx, [esi+edi+1000h]
22651
                and     ebp, 7F8h
22652
                xor     edx, [esi+edi+1004h]
22653
                xor     ecx, [esi+ebx+800h]
22654
                xor     edx, [esi+ebx+804h]
22655
                xor     ecx, [esi+ebp]
22656
                xor     edx, [esi+ebp+4]
22657
                mov     eax, [esp+40h]
22658
                mov     ebx, [esp+44h]
22659
                add     eax, ecx
22660
                adc     ebx, edx
22661
                mov     ecx, eax
22662
                shr     ecx, 1Dh
22663
                mov     ebp, ebx
22664
                shl     ebx, 3
22665
                mov     edi, eax
22666
                shl     eax, 3
22667
                or      ebx, ecx
22668
                sub     eax, edi
22669
                sbb     ebx, ebp
22670
                mov     [esp+40h], eax
22671
                mov     [esp+44h], ebx
22672
                mov     eax, [esp+8]
22673
                mov     ebx, [esp+0Ch]
22674
                mov     ecx, [esp+50h]
22675
                mov     edx, [esp+54h]
22676
                xor     eax, ecx
22677
                xor     ebx, edx
22678
                mov     edi, eax
22679
                mov     [esp+50h], eax
22680
                shr     eax, 0Dh
22681
                mov     ebp, ebx
22682
                and     edi, 0FFh
22683
                mov     [esp+54h], ebx
22684
                shl     edi, 3
22685
                and     ebp, 0FFh
22686
                shr     ebx, 0Dh
22687
                and     eax, 7F8h
22688
                shl     ebp, 3
22689
                mov     ecx, [esi+edi]
22690
                mov     edx, [esi+edi+4]
22691
                xor     ecx, [esi+eax+800h]
22692
                xor     edx, [esi+eax+804h]
22693
                and     ebx, 7F8h
22694
                xor     ecx, [esi+ebp+1000h]
22695
                xor     edx, [esi+ebp+1004h]
22696
                xor     ecx, [esi+ebx+1800h]
22697
                xor     edx, [esi+ebx+1804h]
22698
                mov     edi, [esp+40h]
22699
                mov     ebp, [esp+44h]
22700
                sub     edi, ecx
22701
                mov     eax, [esp+50h]
22702
                sbb     ebp, edx
22703
                mov     ebx, [esp+54h]
22704
                mov     [esp+40h], edi
22705
                mov     edi, eax
22706
                shr     eax, 5
22707
                mov     [esp+44h], ebp
22708
                shr     edi, 15h
22709
                mov     ebp, ebx
22710
                shr     ebx, 5
22711
                and     eax, 7F8h
22712
                shr     ebp, 15h
22713
                and     edi, 7F8h
22714
                and     ebx, 7F8h
22715
                mov     ecx, [esi+eax+1800h]
22716
                mov     edx, [esi+eax+1804h]
22717
                xor     ecx, [esi+edi+1000h]
22718
                and     ebp, 7F8h
22719
                xor     edx, [esi+edi+1004h]
22720
                xor     ecx, [esi+ebx+800h]
22721
                xor     edx, [esi+ebx+804h]
22722
                xor     ecx, [esi+ebp]
22723
                xor     edx, [esi+ebp+4]
22724
                mov     eax, [esp+48h]
22725
                mov     ebx, [esp+4Ch]
22726
                add     eax, ecx
22727
                adc     ebx, edx
22728
                mov     ecx, eax
22729
                shr     ecx, 1Dh
22730
                mov     ebp, ebx
22731
                shl     ebx, 3
22732
                mov     edi, eax
22733
                shl     eax, 3
22734
                or      ebx, ecx
22735
                sub     eax, edi
22736
                sbb     ebx, ebp
22737
                mov     [esp+48h], eax
22738
                mov     [esp+4Ch], ebx
22739
                mov     eax, [esp+10h]
22740
                mov     ebx, [esp+14h]
22741
                mov     ecx, [esp+40h]
22742
                mov     edx, [esp+44h]
22743
                xor     eax, ecx
22744
                xor     ebx, edx
22745
                mov     edi, eax
22746
                mov     [esp+40h], eax
22747
                shr     eax, 0Dh
22748
                mov     ebp, ebx
22749
                and     edi, 0FFh
22750
                mov     [esp+44h], ebx
22751
                shl     edi, 3
22752
                and     ebp, 0FFh
22753
                shr     ebx, 0Dh
22754
                and     eax, 7F8h
22755
                shl     ebp, 3
22756
                mov     ecx, [esi+edi]
22757
                mov     edx, [esi+edi+4]
22758
                xor     ecx, [esi+eax+800h]
22759
                xor     edx, [esi+eax+804h]
22760
                and     ebx, 7F8h
22761
                xor     ecx, [esi+ebp+1000h]
22762
                xor     edx, [esi+ebp+1004h]
22763
                xor     ecx, [esi+ebx+1800h]
22764
                xor     edx, [esi+ebx+1804h]
22765
                mov     edi, [esp+48h]
22766
                mov     ebp, [esp+4Ch]
22767
                sub     edi, ecx
22768
                mov     eax, [esp+40h]
22769
                sbb     ebp, edx
22770
                mov     ebx, [esp+44h]
22771
                mov     [esp+48h], edi
22772
                mov     edi, eax
22773
                shr     eax, 5
22774
                mov     [esp+4Ch], ebp
22775
                shr     edi, 15h
22776
                mov     ebp, ebx
22777
                shr     ebx, 5
22778
                and     eax, 7F8h
22779
                shr     ebp, 15h
22780
                and     edi, 7F8h
22781
                and     ebx, 7F8h
22782
                mov     ecx, [esi+eax+1800h]
22783
                mov     edx, [esi+eax+1804h]
22784
                xor     ecx, [esi+edi+1000h]
22785
                and     ebp, 7F8h
22786
                xor     edx, [esi+edi+1004h]
22787
                xor     ecx, [esi+ebx+800h]
22788
                xor     edx, [esi+ebx+804h]
22789
                xor     ecx, [esi+ebp]
22790
                xor     edx, [esi+ebp+4]
22791
                mov     eax, [esp+50h]
22792
                mov     ebx, [esp+54h]
22793
                add     eax, ecx
22794
                adc     ebx, edx
22795
                mov     ecx, eax
22796
                shr     ecx, 1Dh
22797
                mov     ebp, ebx
22798
                shl     ebx, 3
22799
                mov     edi, eax
22800
                shl     eax, 3
22801
                or      ebx, ecx
22802
                sub     eax, edi
22803
                sbb     ebx, ebp
22804
                mov     [esp+50h], eax
22805
                mov     [esp+54h], ebx
22806
                mov     eax, [esp+18h]
22807
                mov     ebx, [esp+1Ch]
22808
                mov     ecx, [esp+48h]
22809
                mov     edx, [esp+4Ch]
22810
                xor     eax, ecx
22811
                xor     ebx, edx
22812
                mov     edi, eax
22813
                mov     [esp+48h], eax
22814
                shr     eax, 0Dh
22815
                mov     ebp, ebx
22816
                and     edi, 0FFh
22817
                mov     [esp+4Ch], ebx
22818
                shl     edi, 3
22819
                and     ebp, 0FFh
22820
                shr     ebx, 0Dh
22821
                and     eax, 7F8h
22822
                shl     ebp, 3
22823
                mov     ecx, [esi+edi]
22824
                mov     edx, [esi+edi+4]
22825
                xor     ecx, [esi+eax+800h]
22826
                xor     edx, [esi+eax+804h]
22827
                and     ebx, 7F8h
22828
                xor     ecx, [esi+ebp+1000h]
22829
                xor     edx, [esi+ebp+1004h]
22830
                xor     ecx, [esi+ebx+1800h]
22831
                xor     edx, [esi+ebx+1804h]
22832
                mov     edi, [esp+50h]
22833
                mov     ebp, [esp+54h]
22834
                sub     edi, ecx
22835
                mov     eax, [esp+48h]
22836
                sbb     ebp, edx
22837
                mov     ebx, [esp+4Ch]
22838
                mov     [esp+50h], edi
22839
                mov     edi, eax
22840
                shr     eax, 5
22841
                mov     [esp+54h], ebp
22842
                shr     edi, 15h
22843
                mov     ebp, ebx
22844
                shr     ebx, 5
22845
                and     eax, 7F8h
22846
                shr     ebp, 15h
22847
                and     edi, 7F8h
22848
                and     ebx, 7F8h
22849
                mov     ecx, [esi+eax+1800h]
22850
                mov     edx, [esi+eax+1804h]
22851
                xor     ecx, [esi+edi+1000h]
22852
                and     ebp, 7F8h
22853
                xor     edx, [esi+edi+1004h]
22854
                xor     ecx, [esi+ebx+800h]
22855
                xor     edx, [esi+ebx+804h]
22856
                xor     ecx, [esi+ebp]
22857
                xor     edx, [esi+ebp+4]
22858
                mov     eax, [esp+40h]
22859
                mov     ebx, [esp+44h]
22860
                add     eax, ecx
22861
                adc     ebx, edx
22862
                mov     ecx, eax
22863
                shr     ecx, 1Dh
22864
                mov     ebp, ebx
22865
                shl     ebx, 3
22866
                mov     edi, eax
22867
                shl     eax, 3
22868
                or      ebx, ecx
22869
                sub     eax, edi
22870
                sbb     ebx, ebp
22871
                mov     [esp+40h], eax
22872
                mov     [esp+44h], ebx
22873
                mov     eax, [esp+20h]
22874
                mov     ebx, [esp+24h]
22875
                mov     ecx, [esp+50h]
22876
                mov     edx, [esp+54h]
22877
                xor     eax, ecx
22878
                xor     ebx, edx
22879
                mov     edi, eax
22880
                mov     [esp+50h], eax
22881
                shr     eax, 0Dh
22882
                mov     ebp, ebx
22883
                and     edi, 0FFh
22884
                mov     [esp+54h], ebx
22885
                shl     edi, 3
22886
                and     ebp, 0FFh
22887
                shr     ebx, 0Dh
22888
                and     eax, 7F8h
22889
                shl     ebp, 3
22890
                mov     ecx, [esi+edi]
22891
                mov     edx, [esi+edi+4]
22892
                xor     ecx, [esi+eax+800h]
22893
                xor     edx, [esi+eax+804h]
22894
                and     ebx, 7F8h
22895
                xor     ecx, [esi+ebp+1000h]
22896
                xor     edx, [esi+ebp+1004h]
22897
                xor     ecx, [esi+ebx+1800h]
22898
                xor     edx, [esi+ebx+1804h]
22899
                mov     edi, [esp+40h]
22900
                mov     ebp, [esp+44h]
22901
                sub     edi, ecx
22902
                mov     eax, [esp+50h]
22903
                sbb     ebp, edx
22904
                mov     ebx, [esp+54h]
22905
                mov     [esp+40h], edi
22906
                mov     edi, eax
22907
                shr     eax, 5
22908
                mov     [esp+44h], ebp
22909
                shr     edi, 15h
22910
                mov     ebp, ebx
22911
                shr     ebx, 5
22912
                and     eax, 7F8h
22913
                shr     ebp, 15h
22914
                and     edi, 7F8h
22915
                and     ebx, 7F8h
22916
                mov     ecx, [esi+eax+1800h]
22917
                mov     edx, [esi+eax+1804h]
22918
                xor     ecx, [esi+edi+1000h]
22919
                and     ebp, 7F8h
22920
                xor     edx, [esi+edi+1004h]
22921
                xor     ecx, [esi+ebx+800h]
22922
                xor     edx, [esi+ebx+804h]
22923
                xor     ecx, [esi+ebp]
22924
                xor     edx, [esi+ebp+4]
22925
                mov     eax, [esp+48h]
22926
                mov     ebx, [esp+4Ch]
22927
                add     eax, ecx
22928
                adc     ebx, edx
22929
                mov     ecx, eax
22930
                shr     ecx, 1Dh
22931
                mov     ebp, ebx
22932
                shl     ebx, 3
22933
                mov     edi, eax
22934
                shl     eax, 3
22935
                or      ebx, ecx
22936
                sub     eax, edi
22937
                sbb     ebx, ebp
22938
                mov     [esp+48h], eax
22939
                mov     [esp+4Ch], ebx
22940
                mov     eax, [esp+28h]
22941
                mov     ebx, [esp+2Ch]
22942
                mov     ecx, [esp+40h]
22943
                mov     edx, [esp+44h]
22944
                xor     eax, ecx
22945
                xor     ebx, edx
22946
                mov     edi, eax
22947
                mov     [esp+40h], eax
22948
                shr     eax, 0Dh
22949
                mov     ebp, ebx
22950
                and     edi, 0FFh
22951
                mov     [esp+44h], ebx
22952
                shl     edi, 3
22953
                and     ebp, 0FFh
22954
                shr     ebx, 0Dh
22955
                and     eax, 7F8h
22956
                shl     ebp, 3
22957
                mov     ecx, [esi+edi]
22958
                mov     edx, [esi+edi+4]
22959
                xor     ecx, [esi+eax+800h]
22960
                xor     edx, [esi+eax+804h]
22961
                and     ebx, 7F8h
22962
                xor     ecx, [esi+ebp+1000h]
22963
                xor     edx, [esi+ebp+1004h]
22964
                xor     ecx, [esi+ebx+1800h]
22965
                xor     edx, [esi+ebx+1804h]
22966
                mov     edi, [esp+48h]
22967
                mov     ebp, [esp+4Ch]
22968
                sub     edi, ecx
22969
                mov     eax, [esp+40h]
22970
                sbb     ebp, edx
22971
                mov     ebx, [esp+44h]
22972
                mov     [esp+48h], edi
22973
                mov     edi, eax
22974
                shr     eax, 5
22975
                mov     [esp+4Ch], ebp
22976
                shr     edi, 15h
22977
                mov     ebp, ebx
22978
                shr     ebx, 5
22979
                and     eax, 7F8h
22980
                shr     ebp, 15h
22981
                and     edi, 7F8h
22982
                and     ebx, 7F8h
22983
                mov     ecx, [esi+eax+1800h]
22984
                mov     edx, [esi+eax+1804h]
22985
                xor     ecx, [esi+edi+1000h]
22986
                and     ebp, 7F8h
22987
                xor     edx, [esi+edi+1004h]
22988
                xor     ecx, [esi+ebx+800h]
22989
                xor     edx, [esi+ebx+804h]
22990
                xor     ecx, [esi+ebp]
22991
                xor     edx, [esi+ebp+4]
22992
                mov     eax, [esp+50h]
22993
                mov     ebx, [esp+54h]
22994
                add     eax, ecx
22995
                adc     ebx, edx
22996
                mov     ecx, eax
22997
                shr     ecx, 1Dh
22998
                mov     ebp, ebx
22999
                shl     ebx, 3
23000
                mov     edi, eax
23001
                shl     eax, 3
23002
                or      ebx, ecx
23003
                sub     eax, edi
23004
                sbb     ebx, ebp
23005
                mov     [esp+50h], eax
23006
                mov     [esp+54h], ebx
23007
                mov     eax, [esp+30h]
23008
                mov     ebx, [esp+34h]
23009
                mov     ecx, [esp+48h]
23010
                mov     edx, [esp+4Ch]
23011
                xor     eax, ecx
23012
                xor     ebx, edx
23013
                mov     edi, eax
23014
                mov     [esp+48h], eax
23015
                shr     eax, 0Dh
23016
                mov     ebp, ebx
23017
                and     edi, 0FFh
23018
                mov     [esp+4Ch], ebx
23019
                shl     edi, 3
23020
                and     ebp, 0FFh
23021
                shr     ebx, 0Dh
23022
                and     eax, 7F8h
23023
                shl     ebp, 3
23024
                mov     ecx, [esi+edi]
23025
                mov     edx, [esi+edi+4]
23026
                xor     ecx, [esi+eax+800h]
23027
                xor     edx, [esi+eax+804h]
23028
                and     ebx, 7F8h
23029
                xor     ecx, [esi+ebp+1000h]
23030
                xor     edx, [esi+ebp+1004h]
23031
                xor     ecx, [esi+ebx+1800h]
23032
                xor     edx, [esi+ebx+1804h]
23033
                mov     edi, [esp+50h]
23034
                mov     ebp, [esp+54h]
23035
                sub     edi, ecx
23036
                mov     eax, [esp+48h]
23037
                sbb     ebp, edx
23038
                mov     ebx, [esp+4Ch]
23039
                mov     [esp+50h], edi
23040
                mov     edi, eax
23041
                shr     eax, 5
23042
                mov     [esp+54h], ebp
23043
                shr     edi, 15h
23044
                mov     ebp, ebx
23045
                shr     ebx, 5
23046
                and     eax, 7F8h
23047
                shr     ebp, 15h
23048
                and     edi, 7F8h
23049
                and     ebx, 7F8h
23050
                mov     ecx, [esi+eax+1800h]
23051
                mov     edx, [esi+eax+1804h]
23052
                xor     ecx, [esi+edi+1000h]
23053
                and     ebp, 7F8h
23054
                xor     edx, [esi+edi+1004h]
23055
                xor     ecx, [esi+ebx+800h]
23056
                xor     edx, [esi+ebx+804h]
23057
                xor     ecx, [esi+ebp]
23058
                xor     edx, [esi+ebp+4]
23059
                mov     eax, [esp+40h]
23060
                mov     ebx, [esp+44h]
23061
                add     eax, ecx
23062
                adc     ebx, edx
23063
                mov     ecx, eax
23064
                shr     ecx, 1Dh
23065
                mov     ebp, ebx
23066
                shl     ebx, 3
23067
                mov     edi, eax
23068
                shl     eax, 3
23069
                or      ebx, ecx
23070
                sub     eax, edi
23071
                sbb     ebx, ebp
23072
                mov     [esp+40h], eax
23073
                mov     [esp+44h], ebx
23074
                mov     eax, [esp+38h]
23075
                mov     ebx, [esp+3Ch]
23076
                mov     ecx, [esp+50h]
23077
                mov     edx, [esp+54h]
23078
                xor     eax, ecx
23079
                xor     ebx, edx
23080
                mov     edi, eax
23081
                mov     [esp+50h], eax
23082
                shr     eax, 0Dh
23083
                mov     ebp, ebx
23084
                and     edi, 0FFh
23085
                mov     [esp+54h], ebx
23086
                shl     edi, 3
23087
                and     ebp, 0FFh
23088
                shr     ebx, 0Dh
23089
                and     eax, 7F8h
23090
                shl     ebp, 3
23091
                mov     ecx, [esi+edi]
23092
                mov     edx, [esi+edi+4]
23093
                xor     ecx, [esi+eax+800h]
23094
                xor     edx, [esi+eax+804h]
23095
                and     ebx, 7F8h
23096
                xor     ecx, [esi+ebp+1000h]
23097
                xor     edx, [esi+ebp+1004h]
23098
                xor     ecx, [esi+ebx+1800h]
23099
                xor     edx, [esi+ebx+1804h]
23100
                mov     edi, [esp+40h]
23101
                mov     ebp, [esp+44h]
23102
                sub     edi, ecx
23103
                mov     eax, [esp+50h]
23104
                sbb     ebp, edx
23105
                mov     ebx, [esp+54h]
23106
                mov     [esp+40h], edi
23107
                mov     edi, eax
23108
                shr     eax, 5
23109
                mov     [esp+44h], ebp
23110
                shr     edi, 15h
23111
                mov     ebp, ebx
23112
                shr     ebx, 5
23113
                and     eax, 7F8h
23114
                shr     ebp, 15h
23115
                and     edi, 7F8h
23116
                and     ebx, 7F8h
23117
                mov     ecx, [esi+eax+1800h]
23118
                mov     edx, [esi+eax+1804h]
23119
                xor     ecx, [esi+edi+1000h]
23120
                and     ebp, 7F8h
23121
                xor     edx, [esi+edi+1004h]
23122
                xor     ecx, [esi+ebx+800h]
23123
                xor     edx, [esi+ebx+804h]
23124
                xor     ecx, [esi+ebp]
23125
                xor     edx, [esi+ebp+4]
23126
                mov     eax, [esp+48h]
23127
                mov     ebx, [esp+4Ch]
23128
                add     eax, ecx
23129
                adc     ebx, edx
23130
                mov     ecx, eax
23131
                shr     ecx, 1Dh
23132
                mov     ebp, ebx
23133
                shl     ebx, 3
23134
                mov     edi, eax
23135
                shl     eax, 3
23136
                or      ebx, ecx
23137
                sub     eax, edi
23138
                sbb     ebx, ebp
23139
                mov     [esp+48h], eax
23140
                mov     [esp+4Ch], ebx
23141
                mov     eax, [esp+38h]
23142
                mov     ebx, [esp+3Ch]
23143
                xor     eax, 0A5A5A5A5h
23144
                xor     ebx, 0A5A5A5A5h
23145
                mov     ecx, [esp]
23146
                mov     edx, [esp+4]
23147
                sub     ecx, eax
23148
                sbb     edx, ebx
23149
                mov     [esp], ecx
23150
                mov     [esp+4], edx
23151
                mov     eax, [esp+8]
23152
                mov     ebx, [esp+0Ch]
23153
                xor     eax, ecx
23154
                xor     ebx, edx
23155
                mov     [esp+8], eax
23156
                mov     edi, eax
23157
                mov     esi, eax
23158
                shr     edi, 0Dh
23159
                xor     eax, 0FFFFFFFFh
23160
                mov     [esp+0Ch], ebx
23161
                mov     ecx, [esp+10h]
23162
                shl     eax, 13h
23163
                mov     ebp, ebx
23164
                shl     ebx, 13h
23165
                mov     edx, [esp+14h]
23166
                add     esi, ecx
23167
                mov     ecx, [esp+20h]
23168
                adc     ebp, edx
23169
                or      edi, ebx
23170
                mov     [esp+10h], esi
23171
                xor     esi, eax
23172
                mov     [esp+14h], ebp
23173
                mov     eax, [esp+18h]
23174
                xor     ebp, 0FFFFFFFFh
23175
                mov     ebx, [esp+1Ch]
23176
                xor     ebp, edi
23177
                sub     eax, esi
23178
                sbb     ebx, ebp
23179
                mov     edx, [esp+24h]
23180
                mov     [esp+18h], eax
23181
                xor     eax, ecx
23182
                mov     [esp+1Ch], ebx
23183
                xor     ebx, edx
23184
                mov     ecx, [esp+28h]
23185
                mov     edx, [esp+2Ch]
23186
                mov     edi, ebx
23187
                mov     ebp, ebx
23188
                mov     [esp+20h], eax
23189
                xor     ebp, 0FFFFFFFFh
23190
                shl     ebx, 9
23191
                add     ecx, eax
23192
                adc     edx, edi
23193
                mov     [esp+24h], edi
23194
                shr     ebp, 17h
23195
                mov     [esp+28h], ecx
23196
                shr     eax, 17h
23197
                xor     ecx, 0FFFFFFFFh
23198
                or      ebx, eax
23199
                mov     [esp+2Ch], edx
23200
                mov     eax, [esp+30h]
23201
                xor     ecx, ebx
23202
                mov     ebx, [esp+34h]
23203
                xor     edx, ebp
23204
                mov     edi, [esp+38h]
23205
                sub     eax, ecx
23206
                mov     ebp, [esp+3Ch]
23207
                mov     [esp+30h], eax
23208
                sbb     ebx, edx
23209
                xor     edi, eax
23210
                xor     ebp, ebx
23211
                mov     [esp+34h], ebx
23212
                mov     eax, [esp]
23213
                mov     ecx, edi
23214
                xor     edi, 0FFFFFFFFh
23215
                mov     ebx, [esp+4]
23216
                shl     edi, 13h
23217
                mov     [esp+38h], ecx
23218
                add     eax, ecx
23219
                mov     [esp+3Ch], ebp
23220
                adc     ebx, ebp
23221
                xor     edi, eax
23222
                shr     ecx, 0Dh
23223
                mov     [esp], eax
23224
                shl     ebp, 13h
23225
                mov     [esp+4], ebx
23226
                mov     esi, [esp+8]
23227
                xor     ebx, 0FFFFFFFFh
23228
                or      ebp, ecx
23229
                mov     edx, [esp+0Ch]
23230
                xor     ebp, ebx
23231
                sub     esi, edi
23232
                mov     eax, [esp+10h]
23233
                mov     ebx, [esp+14h]
23234
                sbb     edx, ebp
23235
                mov     [esp+8], esi
23236
                xor     eax, esi
23237
                mov     [esp+0Ch], edx
23238
                mov     edi, [esp+18h]
23239
                mov     ebp, [esp+1Ch]
23240
                xor     ebx, edx
23241
                mov     [esp+10h], eax
23242
                add     edi, eax
23243
                mov     esi, ebx
23244
                adc     ebp, ebx
23245
                mov     [esp+14h], ebx
23246
                shr     eax, 17h
23247
                mov     ecx, [esp+20h]
23248
                xor     ebx, 0FFFFFFFFh
23249
                mov     edx, [esp+24h]
23250
                shl     esi, 9
23251
                mov     [esp+18h], edi
23252
                or      eax, esi
23253
                xor     edi, 0FFFFFFFFh
23254
                shr     ebx, 17h
23255
                mov     [esp+1Ch], ebp
23256
                xor     eax, edi
23257
                mov     edi, [esp+28h]
23258
                xor     ebx, ebp
23259
                sub     ecx, eax
23260
                mov     ebp, [esp+2Ch]
23261
                mov     [esp+20h], ecx
23262
                sbb     edx, ebx
23263
                xor     edi, ecx
23264
                mov     [esp+24h], edx
23265
                xor     ebp, edx
23266
                mov     eax, [esp+30h]
23267
                mov     ebx, [esp+34h]
23268
                mov     [esp+28h], edi
23269
                add     eax, edi
23270
                mov     [esp+2Ch], ebp
23271
                mov     ecx, [esp+38h]
23272
                adc     ebx, ebp
23273
                mov     edx, [esp+3Ch]
23274
                mov     [esp+30h], eax
23275
                xor     eax, 89ABCDEFh
23276
                mov     [esp+34h], ebx
23277
                xor     ebx, 1234567h
23278
                sub     ecx, eax
23279
                sbb     edx, ebx
23280
                mov     [esp+38h], ecx
23281
                mov     [esp+3Ch], edx
23282
23283
            @_pass_loop:
23284
                mov     esi, [esp+64h]
23285
                mov     eax, [esp]
23286
                mov     ebx, [esp+4]
23287
                mov     ecx, [esp+40h]
23288
                mov     edx, [esp+44h]
23289
                xor     eax, ecx
23290
                xor     ebx, edx
23291
                mov     edi, eax
23292
                mov     [esp+40h], eax
23293
                shr     eax, 0Dh
23294
                mov     ebp, ebx
23295
                and     edi, 0FFh
23296
                mov     [esp+44h], ebx
23297
                shl     edi, 3
23298
                and     ebp, 0FFh
23299
                shr     ebx, 0Dh
23300
                and     eax, 7F8h
23301
                shl     ebp, 3
23302
                mov     ecx, [esi+edi]
23303
                mov     edx, [esi+edi+4]
23304
                xor     ecx, [esi+eax+800h]
23305
                xor     edx, [esi+eax+804h]
23306
                and     ebx, 7F8h
23307
                xor     ecx, [esi+ebp+1000h]
23308
                xor     edx, [esi+ebp+1004h]
23309
                xor     ecx, [esi+ebx+1800h]
23310
                xor     edx, [esi+ebx+1804h]
23311
                mov     edi, [esp+48h]
23312
                mov     ebp, [esp+4Ch]
23313
                sub     edi, ecx
23314
                mov     eax, [esp+40h]
23315
                sbb     ebp, edx
23316
                mov     ebx, [esp+44h]
23317
                mov     [esp+48h], edi
23318
                mov     edi, eax
23319
                shr     eax, 5
23320
                mov     [esp+4Ch], ebp
23321
                shr     edi, 15h
23322
                mov     ebp, ebx
23323
                shr     ebx, 5
23324
                and     eax, 7F8h
23325
                shr     ebp, 15h
23326
                and     edi, 7F8h
23327
                and     ebx, 7F8h
23328
                mov     ecx, [esi+eax+1800h]
23329
                mov     edx, [esi+eax+1804h]
23330
                xor     ecx, [esi+edi+1000h]
23331
                and     ebp, 7F8h
23332
                xor     edx, [esi+edi+1004h]
23333
                xor     ecx, [esi+ebx+800h]
23334
                xor     edx, [esi+ebx+804h]
23335
                xor     ecx, [esi+ebp]
23336
                xor     edx, [esi+ebp+4]
23337
                mov     eax, [esp+50h]
23338
                mov     ebx, [esp+54h]
23339
                add     eax, ecx
23340
                adc     ebx, edx
23341
                mov     ecx, eax
23342
                shr     ecx, 1Dh
23343
                mov     ebp, ebx
23344
                shl     ebx, 3
23345
                mov     edi, eax
23346
                shl     eax, 3
23347
                or      ebx, ecx
23348
                add     eax, edi
23349
                adc     ebx, ebp
23350
                mov     [esp+50h], eax
23351
                mov     [esp+54h], ebx
23352
                mov     eax, [esp+8]
23353
                mov     ebx, [esp+0Ch]
23354
                mov     ecx, [esp+48h]
23355
                mov     edx, [esp+4Ch]
23356
                xor     eax, ecx
23357
                xor     ebx, edx
23358
                mov     edi, eax
23359
                mov     [esp+48h], eax
23360
                shr     eax, 0Dh
23361
                mov     ebp, ebx
23362
                and     edi, 0FFh
23363
                mov     [esp+4Ch], ebx
23364
                shl     edi, 3
23365
                and     ebp, 0FFh
23366
                shr     ebx, 0Dh
23367
                and     eax, 7F8h
23368
                shl     ebp, 3
23369
                mov     ecx, [esi+edi]
23370
                mov     edx, [esi+edi+4]
23371
                xor     ecx, [esi+eax+800h]
23372
                xor     edx, [esi+eax+804h]
23373
                and     ebx, 7F8h
23374
                xor     ecx, [esi+ebp+1000h]
23375
                xor     edx, [esi+ebp+1004h]
23376
                xor     ecx, [esi+ebx+1800h]
23377
                xor     edx, [esi+ebx+1804h]
23378
                mov     edi, [esp+50h]
23379
                mov     ebp, [esp+54h]
23380
                sub     edi, ecx
23381
                mov     eax, [esp+48h]
23382
                sbb     ebp, edx
23383
                mov     ebx, [esp+4Ch]
23384
                mov     [esp+50h], edi
23385
                mov     edi, eax
23386
                shr     eax, 5
23387
                mov     [esp+54h], ebp
23388
                shr     edi, 15h
23389
                mov     ebp, ebx
23390
                shr     ebx, 5
23391
                and     eax, 7F8h
23392
                shr     ebp, 15h
23393
                and     edi, 7F8h
23394
                and     ebx, 7F8h
23395
                mov     ecx, [esi+eax+1800h]
23396
                mov     edx, [esi+eax+1804h]
23397
                xor     ecx, [esi+edi+1000h]
23398
                and     ebp, 7F8h
23399
                xor     edx, [esi+edi+1004h]
23400
                xor     ecx, [esi+ebx+800h]
23401
                xor     edx, [esi+ebx+804h]
23402
                xor     ecx, [esi+ebp]
23403
                xor     edx, [esi+ebp+4]
23404
                mov     eax, [esp+40h]
23405
                mov     ebx, [esp+44h]
23406
                add     eax, ecx
23407
                adc     ebx, edx
23408
                mov     ecx, eax
23409
                shr     ecx, 1Dh
23410
                mov     ebp, ebx
23411
                shl     ebx, 3
23412
                mov     edi, eax
23413
                shl     eax, 3
23414
                or      ebx, ecx
23415
                add     eax, edi
23416
                adc     ebx, ebp
23417
                mov     [esp+40h], eax
23418
                mov     [esp+44h], ebx
23419
                mov     eax, [esp+10h]
23420
                mov     ebx, [esp+14h]
23421
                mov     ecx, [esp+50h]
23422
                mov     edx, [esp+54h]
23423
                xor     eax, ecx
23424
                xor     ebx, edx
23425
                mov     edi, eax
23426
                mov     [esp+50h], eax
23427
                shr     eax, 0Dh
23428
                mov     ebp, ebx
23429
                and     edi, 0FFh
23430
                mov     [esp+54h], ebx
23431
                shl     edi, 3
23432
                and     ebp, 0FFh
23433
                shr     ebx, 0Dh
23434
                and     eax, 7F8h
23435
                shl     ebp, 3
23436
                mov     ecx, [esi+edi]
23437
                mov     edx, [esi+edi+4]
23438
                xor     ecx, [esi+eax+800h]
23439
                xor     edx, [esi+eax+804h]
23440
                and     ebx, 7F8h
23441
                xor     ecx, [esi+ebp+1000h]
23442
                xor     edx, [esi+ebp+1004h]
23443
                xor     ecx, [esi+ebx+1800h]
23444
                xor     edx, [esi+ebx+1804h]
23445
                mov     edi, [esp+40h]
23446
                mov     ebp, [esp+44h]
23447
                sub     edi, ecx
23448
                mov     eax, [esp+50h]
23449
                sbb     ebp, edx
23450
                mov     ebx, [esp+54h]
23451
                mov     [esp+40h], edi
23452
                mov     edi, eax
23453
                shr     eax, 5
23454
                mov     [esp+44h], ebp
23455
                shr     edi, 15h
23456
                mov     ebp, ebx
23457
                shr     ebx, 5
23458
                and     eax, 7F8h
23459
                shr     ebp, 15h
23460
                and     edi, 7F8h
23461
                and     ebx, 7F8h
23462
                mov     ecx, [esi+eax+1800h]
23463
                mov     edx, [esi+eax+1804h]
23464
                xor     ecx, [esi+edi+1000h]
23465
                and     ebp, 7F8h
23466
                xor     edx, [esi+edi+1004h]
23467
                xor     ecx, [esi+ebx+800h]
23468
                xor     edx, [esi+ebx+804h]
23469
                xor     ecx, [esi+ebp]
23470
                xor     edx, [esi+ebp+4]
23471
                mov     eax, [esp+48h]
23472
                mov     ebx, [esp+4Ch]
23473
                add     eax, ecx
23474
                adc     ebx, edx
23475
                mov     ecx, eax
23476
                shr     ecx, 1Dh
23477
                mov     ebp, ebx
23478
                shl     ebx, 3
23479
                mov     edi, eax
23480
                shl     eax, 3
23481
                or      ebx, ecx
23482
                add     eax, edi
23483
                adc     ebx, ebp
23484
                mov     [esp+48h], eax
23485
                mov     [esp+4Ch], ebx
23486
                mov     eax, [esp+18h]
23487
                mov     ebx, [esp+1Ch]
23488
                mov     ecx, [esp+40h]
23489
                mov     edx, [esp+44h]
23490
                xor     eax, ecx
23491
                xor     ebx, edx
23492
                mov     edi, eax
23493
                mov     [esp+40h], eax
23494
                shr     eax, 0Dh
23495
                mov     ebp, ebx
23496
                and     edi, 0FFh
23497
                mov     [esp+44h], ebx
23498
                shl     edi, 3
23499
                and     ebp, 0FFh
23500
                shr     ebx, 0Dh
23501
                and     eax, 7F8h
23502
                shl     ebp, 3
23503
                mov     ecx, [esi+edi]
23504
                mov     edx, [esi+edi+4]
23505
                xor     ecx, [esi+eax+800h]
23506
                xor     edx, [esi+eax+804h]
23507
                and     ebx, 7F8h
23508
                xor     ecx, [esi+ebp+1000h]
23509
                xor     edx, [esi+ebp+1004h]
23510
                xor     ecx, [esi+ebx+1800h]
23511
                xor     edx, [esi+ebx+1804h]
23512
                mov     edi, [esp+48h]
23513
                mov     ebp, [esp+4Ch]
23514
                sub     edi, ecx
23515
                mov     eax, [esp+40h]
23516
                sbb     ebp, edx
23517
                mov     ebx, [esp+44h]
23518
                mov     [esp+48h], edi
23519
                mov     edi, eax
23520
                shr     eax, 5
23521
                mov     [esp+4Ch], ebp
23522
                shr     edi, 15h
23523
                mov     ebp, ebx
23524
                shr     ebx, 5
23525
                and     eax, 7F8h
23526
                shr     ebp, 15h
23527
                and     edi, 7F8h
23528
                and     ebx, 7F8h
23529
                mov     ecx, [esi+eax+1800h]
23530
                mov     edx, [esi+eax+1804h]
23531
                xor     ecx, [esi+edi+1000h]
23532
                and     ebp, 7F8h
23533
                xor     edx, [esi+edi+1004h]
23534
                xor     ecx, [esi+ebx+800h]
23535
                xor     edx, [esi+ebx+804h]
23536
                xor     ecx, [esi+ebp]
23537
                xor     edx, [esi+ebp+4]
23538
                mov     eax, [esp+50h]
23539
                mov     ebx, [esp+54h]
23540
                add     eax, ecx
23541
                adc     ebx, edx
23542
                mov     ecx, eax
23543
                shr     ecx, 1Dh
23544
                mov     ebp, ebx
23545
                shl     ebx, 3
23546
                mov     edi, eax
23547
                shl     eax, 3
23548
                or      ebx, ecx
23549
                add     eax, edi
23550
                adc     ebx, ebp
23551
                mov     [esp+50h], eax
23552
                mov     [esp+54h], ebx
23553
                mov     eax, [esp+20h]
23554
                mov     ebx, [esp+24h]
23555
                mov     ecx, [esp+48h]
23556
                mov     edx, [esp+4Ch]
23557
                xor     eax, ecx
23558
                xor     ebx, edx
23559
                mov     edi, eax
23560
                mov     [esp+48h], eax
23561
                shr     eax, 0Dh
23562
                mov     ebp, ebx
23563
                and     edi, 0FFh
23564
                mov     [esp+4Ch], ebx
23565
                shl     edi, 3
23566
                and     ebp, 0FFh
23567
                shr     ebx, 0Dh
23568
                and     eax, 7F8h
23569
                shl     ebp, 3
23570
                mov     ecx, [esi+edi]
23571
                mov     edx, [esi+edi+4]
23572
                xor     ecx, [esi+eax+800h]
23573
                xor     edx, [esi+eax+804h]
23574
                and     ebx, 7F8h
23575
                xor     ecx, [esi+ebp+1000h]
23576
                xor     edx, [esi+ebp+1004h]
23577
                xor     ecx, [esi+ebx+1800h]
23578
                xor     edx, [esi+ebx+1804h]
23579
                mov     edi, [esp+50h]
23580
                mov     ebp, [esp+54h]
23581
                sub     edi, ecx
23582
                mov     eax, [esp+48h]
23583
                sbb     ebp, edx
23584
                mov     ebx, [esp+4Ch]
23585
                mov     [esp+50h], edi
23586
                mov     edi, eax
23587
                shr     eax, 5
23588
                mov     [esp+54h], ebp
23589
                shr     edi, 15h
23590
                mov     ebp, ebx
23591
                shr     ebx, 5
23592
                and     eax, 7F8h
23593
                shr     ebp, 15h
23594
                and     edi, 7F8h
23595
                and     ebx, 7F8h
23596
                mov     ecx, [esi+eax+1800h]
23597
                mov     edx, [esi+eax+1804h]
23598
                xor     ecx, [esi+edi+1000h]
23599
                and     ebp, 7F8h
23600
                xor     edx, [esi+edi+1004h]
23601
                xor     ecx, [esi+ebx+800h]
23602
                xor     edx, [esi+ebx+804h]
23603
                xor     ecx, [esi+ebp]
23604
                xor     edx, [esi+ebp+4]
23605
                mov     eax, [esp+40h]
23606
                mov     ebx, [esp+44h]
23607
                add     eax, ecx
23608
                adc     ebx, edx
23609
                mov     ecx, eax
23610
                shr     ecx, 1Dh
23611
                mov     ebp, ebx
23612
                shl     ebx, 3
23613
                mov     edi, eax
23614
                shl     eax, 3
23615
                or      ebx, ecx
23616
                add     eax, edi
23617
                adc     ebx, ebp
23618
                mov     [esp+40h], eax
23619
                mov     [esp+44h], ebx
23620
                mov     eax, [esp+28h]
23621
                mov     ebx, [esp+2Ch]
23622
                mov     ecx, [esp+50h]
23623
                mov     edx, [esp+54h]
23624
                xor     eax, ecx
23625
                xor     ebx, edx
23626
                mov     edi, eax
23627
                mov     [esp+50h], eax
23628
                shr     eax, 0Dh
23629
                mov     ebp, ebx
23630
                and     edi, 0FFh
23631
                mov     [esp+54h], ebx
23632
                shl     edi, 3
23633
                and     ebp, 0FFh
23634
                shr     ebx, 0Dh
23635
                and     eax, 7F8h
23636
                shl     ebp, 3
23637
                mov     ecx, [esi+edi]
23638
                mov     edx, [esi+edi+4]
23639
                xor     ecx, [esi+eax+800h]
23640
                xor     edx, [esi+eax+804h]
23641
                and     ebx, 7F8h
23642
                xor     ecx, [esi+ebp+1000h]
23643
                xor     edx, [esi+ebp+1004h]
23644
                xor     ecx, [esi+ebx+1800h]
23645
                xor     edx, [esi+ebx+1804h]
23646
                mov     edi, [esp+40h]
23647
                mov     ebp, [esp+44h]
23648
                sub     edi, ecx
23649
                mov     eax, [esp+50h]
23650
                sbb     ebp, edx
23651
                mov     ebx, [esp+54h]
23652
                mov     [esp+40h], edi
23653
                mov     edi, eax
23654
                shr     eax, 5
23655
                mov     [esp+44h], ebp
23656
                shr     edi, 15h
23657
                mov     ebp, ebx
23658
                shr     ebx, 5
23659
                and     eax, 7F8h
23660
                shr     ebp, 15h
23661
                and     edi, 7F8h
23662
                and     ebx, 7F8h
23663
                mov     ecx, [esi+eax+1800h]
23664
                mov     edx, [esi+eax+1804h]
23665
                xor     ecx, [esi+edi+1000h]
23666
                and     ebp, 7F8h
23667
                xor     edx, [esi+edi+1004h]
23668
                xor     ecx, [esi+ebx+800h]
23669
                xor     edx, [esi+ebx+804h]
23670
                xor     ecx, [esi+ebp]
23671
                xor     edx, [esi+ebp+4]
23672
                mov     eax, [esp+48h]
23673
                mov     ebx, [esp+4Ch]
23674
                add     eax, ecx
23675
                adc     ebx, edx
23676
                mov     ecx, eax
23677
                shr     ecx, 1Dh
23678
                mov     ebp, ebx
23679
                shl     ebx, 3
23680
                mov     edi, eax
23681
                shl     eax, 3
23682
                or      ebx, ecx
23683
                add     eax, edi
23684
                adc     ebx, ebp
23685
                mov     [esp+48h], eax
23686
                mov     [esp+4Ch], ebx
23687
                mov     eax, [esp+30h]
23688
                mov     ebx, [esp+34h]
23689
                mov     ecx, [esp+40h]
23690
                mov     edx, [esp+44h]
23691
                xor     eax, ecx
23692
                xor     ebx, edx
23693
                mov     edi, eax
23694
                mov     [esp+40h], eax
23695
                shr     eax, 0Dh
23696
                mov     ebp, ebx
23697
                and     edi, 0FFh
23698
                mov     [esp+44h], ebx
23699
                shl     edi, 3
23700
                and     ebp, 0FFh
23701
                shr     ebx, 0Dh
23702
                and     eax, 7F8h
23703
                shl     ebp, 3
23704
                mov     ecx, [esi+edi]
23705
                mov     edx, [esi+edi+4]
23706
                xor     ecx, [esi+eax+800h]
23707
                xor     edx, [esi+eax+804h]
23708
                and     ebx, 7F8h
23709
                xor     ecx, [esi+ebp+1000h]
23710
                xor     edx, [esi+ebp+1004h]
23711
                xor     ecx, [esi+ebx+1800h]
23712
                xor     edx, [esi+ebx+1804h]
23713
                mov     edi, [esp+48h]
23714
                mov     ebp, [esp+4Ch]
23715
                sub     edi, ecx
23716
                mov     eax, [esp+40h]
23717
                sbb     ebp, edx
23718
                mov     ebx, [esp+44h]
23719
                mov     [esp+48h], edi
23720
                mov     edi, eax
23721
                shr     eax, 5
23722
                mov     [esp+4Ch], ebp
23723
                shr     edi, 15h
23724
                mov     ebp, ebx
23725
                shr     ebx, 5
23726
                and     eax, 7F8h
23727
                shr     ebp, 15h
23728
                and     edi, 7F8h
23729
                and     ebx, 7F8h
23730
                mov     ecx, [esi+eax+1800h]
23731
                mov     edx, [esi+eax+1804h]
23732
                xor     ecx, [esi+edi+1000h]
23733
                and     ebp, 7F8h
23734
                xor     edx, [esi+edi+1004h]
23735
                xor     ecx, [esi+ebx+800h]
23736
                xor     edx, [esi+ebx+804h]
23737
                xor     ecx, [esi+ebp]
23738
                xor     edx, [esi+ebp+4]
23739
                mov     eax, [esp+50h]
23740
                mov     ebx, [esp+54h]
23741
                add     eax, ecx
23742
                adc     ebx, edx
23743
                mov     ecx, eax
23744
                shr     ecx, 1Dh
23745
                mov     ebp, ebx
23746
                shl     ebx, 3
23747
                mov     edi, eax
23748
                shl     eax, 3
23749
                or      ebx, ecx
23750
                add     eax, edi
23751
                adc     ebx, ebp
23752
                mov     [esp+50h], eax
23753
                mov     [esp+54h], ebx
23754
                mov     eax, [esp+38h]
23755
                mov     ebx, [esp+3Ch]
23756
                mov     ecx, [esp+48h]
23757
                mov     edx, [esp+4Ch]
23758
                xor     eax, ecx
23759
                xor     ebx, edx
23760
                mov     edi, eax
23761
                mov     [esp+48h], eax
23762
                shr     eax, 0Dh
23763
                mov     ebp, ebx
23764
                and     edi, 0FFh
23765
                mov     [esp+4Ch], ebx
23766
                shl     edi, 3
23767
                and     ebp, 0FFh
23768
                shr     ebx, 0Dh
23769
                and     eax, 7F8h
23770
                shl     ebp, 3
23771
                mov     ecx, [esi+edi]
23772
                mov     edx, [esi+edi+4]
23773
                xor     ecx, [esi+eax+800h]
23774
                xor     edx, [esi+eax+804h]
23775
                and     ebx, 7F8h
23776
                xor     ecx, [esi+ebp+1000h]
23777
                xor     edx, [esi+ebp+1004h]
23778
                xor     ecx, [esi+ebx+1800h]
23779
                xor     edx, [esi+ebx+1804h]
23780
                mov     edi, [esp+50h]
23781
                mov     ebp, [esp+54h]
23782
                sub     edi, ecx
23783
                mov     eax, [esp+48h]
23784
                sbb     ebp, edx
23785
                mov     ebx, [esp+4Ch]
23786
                mov     [esp+50h], edi
23787
                mov     edi, eax
23788
                shr     eax, 5
23789
                mov     [esp+54h], ebp
23790
                shr     edi, 15h
23791
                mov     ebp, ebx
23792
                shr     ebx, 5
23793
                and     eax, 7F8h
23794
                shr     ebp, 15h
23795
                and     edi, 7F8h
23796
                and     ebx, 7F8h
23797
                mov     ecx, [esi+eax+1800h]
23798
                mov     edx, [esi+eax+1804h]
23799
                xor     ecx, [esi+edi+1000h]
23800
                and     ebp, 7F8h
23801
                xor     edx, [esi+edi+1004h]
23802
                xor     ecx, [esi+ebx+800h]
23803
                xor     edx, [esi+ebx+804h]
23804
                xor     ecx, [esi+ebp]
23805
                xor     edx, [esi+ebp+4]
23806
                mov     eax, [esp+40h]
23807
                mov     ebx, [esp+44h]
23808
                add     eax, ecx
23809
                adc     ebx, edx
23810
                mov     ecx, eax
23811
                shr     ecx, 1Dh
23812
                mov     ebp, ebx
23813
                shl     ebx, 3
23814
                mov     edi, eax
23815
                shl     eax, 3
23816
                or      ebx, ecx
23817
                add     eax, edi
23818
                adc     ebx, ebp
23819
                mov     [esp+40h], eax
23820
                mov     [esp+44h], ebx
23821
                mov     esi, [esp+60h]
23822
                test    esi, esi
23823
                jnz     @_yet_more_cycles
23824
                jmp     @_pass_loop_end
23825
23826
            @_yet_more_cycles:
23827
23828
                dec     esi
23829
                mov     [esp+60h], esi
23830
                mov     eax, [esp+38h]
23831
                mov     ebx, [esp+3Ch]
23832
                xor     eax, 0A5A5A5A5h
23833
                xor     ebx, 0A5A5A5A5h
23834
                mov     ecx, [esp]
23835
                mov     edx, [esp+4]
23836
                sub     ecx, eax
23837
                sbb     edx, ebx
23838
                mov     [esp], ecx
23839
                mov     [esp+4], edx
23840
                mov     eax, [esp+8]
23841
                mov     ebx, [esp+0Ch]
23842
                xor     eax, ecx
23843
                xor     ebx, edx
23844
                mov     [esp+8], eax
23845
                mov     edi, eax
23846
                mov     esi, eax
23847
                shr     edi, 0Dh
23848
                xor     eax, 0FFFFFFFFh
23849
                mov     [esp+0Ch], ebx
23850
                mov     ecx, [esp+10h]
23851
                shl     eax, 13h
23852
                mov     ebp, ebx
23853
                shl     ebx, 13h
23854
                mov     edx, [esp+14h]
23855
                add     esi, ecx
23856
                mov     ecx, [esp+20h]
23857
                adc     ebp, edx
23858
                or      edi, ebx
23859
                mov     [esp+10h], esi
23860
                xor     esi, eax
23861
                mov     [esp+14h], ebp
23862
                mov     eax, [esp+18h]
23863
                xor     ebp, 0FFFFFFFFh
23864
                mov     ebx, [esp+1Ch]
23865
                xor     ebp, edi
23866
                sub     eax, esi
23867
                sbb     ebx, ebp
23868
                mov     edx, [esp+24h]
23869
                mov     [esp+18h], eax
23870
                xor     eax, ecx
23871
                mov     [esp+1Ch], ebx
23872
                xor     ebx, edx
23873
                mov     ecx, [esp+28h]
23874
                mov     edx, [esp+2Ch]
23875
                mov     edi, ebx
23876
                mov     ebp, ebx
23877
                mov     [esp+20h], eax
23878
                xor     ebp, 0FFFFFFFFh
23879
                shl     ebx, 9
23880
                add     ecx, eax
23881
                adc     edx, edi
23882
                mov     [esp+24h], edi
23883
                shr     ebp, 17h
23884
                mov     [esp+28h], ecx
23885
                shr     eax, 17h
23886
                xor     ecx, 0FFFFFFFFh
23887
                or      ebx, eax
23888
                mov     [esp+2Ch], edx
23889
                mov     eax, [esp+30h]
23890
                xor     ecx, ebx
23891
                mov     ebx, [esp+34h]
23892
                xor     edx, ebp
23893
                mov     edi, [esp+38h]
23894
                sub     eax, ecx
23895
                mov     ebp, [esp+3Ch]
23896
                mov     [esp+30h], eax
23897
                sbb     ebx, edx
23898
                xor     edi, eax
23899
                xor     ebp, ebx
23900
                mov     [esp+34h], ebx
23901
                mov     eax, [esp]
23902
                mov     ecx, edi
23903
                xor     edi, 0FFFFFFFFh
23904
                mov     ebx, [esp+4]
23905
                shl     edi, 13h
23906
                mov     [esp+38h], ecx
23907
                add     eax, ecx
23908
                mov     [esp+3Ch], ebp
23909
                adc     ebx, ebp
23910
                xor     edi, eax
23911
                shr     ecx, 0Dh
23912
                mov     [esp], eax
23913
                shl     ebp, 13h
23914
                mov     [esp+4], ebx
23915
                mov     esi, [esp+8]
23916
                xor     ebx, 0FFFFFFFFh
23917
                or      ebp, ecx
23918
                mov     edx, [esp+0Ch]
23919
                xor     ebp, ebx
23920
                sub     esi, edi
23921
                mov     eax, [esp+10h]
23922
                mov     ebx, [esp+14h]
23923
                sbb     edx, ebp
23924
                mov     [esp+8], esi
23925
                xor     eax, esi
23926
                mov     [esp+0Ch], edx
23927
                mov     edi, [esp+18h]
23928
                mov     ebp, [esp+1Ch]
23929
                xor     ebx, edx
23930
                mov     [esp+10h], eax
23931
                add     edi, eax
23932
                mov     esi, ebx
23933
                adc     ebp, ebx
23934
                mov     [esp+14h], ebx
23935
                shr     eax, 17h
23936
                mov     ecx, [esp+20h]
23937
                xor     ebx, 0FFFFFFFFh
23938
                mov     edx, [esp+24h]
23939
                shl     esi, 9
23940
                mov     [esp+18h], edi
23941
                or      eax, esi
23942
                xor     edi, 0FFFFFFFFh
23943
                shr     ebx, 17h
23944
                mov     [esp+1Ch], ebp
23945
                xor     eax, edi
23946
                mov     edi, [esp+28h]
23947
                xor     ebx, ebp
23948
                sub     ecx, eax
23949
                mov     ebp, [esp+2Ch]
23950
                mov     [esp+20h], ecx
23951
                sbb     edx, ebx
23952
                xor     edi, ecx
23953
                mov     [esp+24h], edx
23954
                xor     ebp, edx
23955
                mov     eax, [esp+30h]
23956
                mov     ebx, [esp+34h]
23957
                mov     [esp+28h], edi
23958
                add     eax, edi
23959
                mov     [esp+2Ch], ebp
23960
                mov     ecx, [esp+38h]
23961
                adc     ebx, ebp
23962
                mov     edx, [esp+3Ch]
23963
                mov     [esp+30h], eax
23964
                xor     eax, 89ABCDEFh
23965
                mov     [esp+34h], ebx
23966
                xor     ebx, 1234567h
23967
                sub     ecx, eax
23968
                sbb     edx, ebx
23969
                mov     [esp+38h], ecx
23970
                mov     [esp+3Ch], edx
23971
                mov     eax, [esp+40h]
23972
                mov     ebx, [esp+44h]
23973
                mov     ecx, [esp+48h]
23974
                mov     edx, [esp+4Ch]
23975
                mov     [esp+48h], eax
23976
                mov     [esp+4Ch], ebx
23977
                mov     edi, [esp+50h]
23978
                mov     ebp, [esp+54h]
23979
                mov     [esp+50h], ecx
23980
                mov     [esp+54h], edx
23981
                mov     [esp+40h], edi
23982
                mov     [esp+44h], ebp
23983
                jmp     @_pass_loop
23984
23985
            @_pass_loop_end:
23986
                mov     esi, [esp+5Ch]
23987
                mov     eax, [esp+40h]
23988
                mov     ebx, [esp+44h]
23989
                mov     edi, [esp+48h]
23990
                mov     ebp, [esp+4Ch]
23991
                mov     ecx, [esi]
23992
                mov     edx, [esi+4]
23993
                xor     eax, ecx
23994
                xor     ebx, edx
23995
                mov     [esi], eax
23996
                mov     ecx, [esi+8]
23997
                mov     edx, [esi+0Ch]
23998
                mov     [esi+4], ebx
23999
                sub     edi, ecx
24000
                mov     ecx, [esi+10h]
24001
                mov     [esi+8], edi
24002
                sbb     ebp, edx
24003
                mov     edx, [esi+14h]
24004
                mov     [esi+0Ch], ebp
24005
                mov     eax, [esp+50h]
24006
                mov     ebx, [esp+54h]
24007
                add     ecx, eax
24008
                adc     edx, ebx
24009
                mov     [esi+10h], ecx
24010
                mov     [esi+14h], edx
24011
                mov     ebp, [esp+68h]
24012
                mov     esp, ebp
24013
                pop     ebp
24014
                pop     edi
24015
                pop     esi
24016
                pop     ebx
24017
end;
24018
{$ENDIF}
24019
24020
{$IFDEF THash_Panama_asm}
24021
procedure THash_Panama.DoPull;
24022
asm
24023
                push    ebx
24024
                push    esi
24025
                lea     edx, [eax].THash_Panama.FTap
24026
                push    edi
24027
                lea     edi, [eax].THash_Panama.FDigest
24028
                push    ebp
24029
                lea     eax, [eax].THash_Panama.FLFSRBuffer
24030
                mov     ebp, esp
24031
                add     esp, 0FFFFFF5Ch
24032
                and     esp, 0FFFFFFE0h
24033
                mov     [esp+88h], edi
24034
                mov     [esp+8Ch], edx
24035
                mov     ecx, 20h
24036
                mov     [esp+90h], eax
24037
                mov     [esp+0A0h], ebp
24038
                mov     eax, [edi]
24039
                mov     ebx, [edi+4]
24040
                mov     [esp], eax
24041
                mov     [esp+4], ebx
24042
                mov     ebp, [edi+8]
24043
                mov     esi, [edi+0Ch]
24044
                mov     [esp+8], ebp
24045
                mov     [esp+0Ch], esi
24046
                mov     eax, [edi+10h]
24047
                mov     ebx, [edi+14h]
24048
                mov     [esp+10h], eax
24049
                mov     [esp+14h], ebx
24050
                mov     ebp, [edi+18h]
24051
                mov     esi, [edi+1Ch]
24052
                mov     [esp+18h], ebp
24053
                mov     [esp+1Ch], esi
24054
                mov     eax, [edi+20h]
24055
                mov     ebx, [edi+24h]
24056
                mov     [esp+20h], eax
24057
                mov     [esp+24h], ebx
24058
                mov     ebp, [edi+28h]
24059
                mov     esi, [edi+2Ch]
24060
                mov     [esp+28h], ebp
24061
                mov     [esp+2Ch], esi
24062
                mov     eax, [edi+30h]
24063
                mov     ebx, [edi+34h]
24064
                mov     [esp+30h], eax
24065
                mov     [esp+34h], ebx
24066
                mov     ebp, [edi+38h]
24067
                mov     esi, [edi+3Ch]
24068
                mov     eax, [edi+40h]
24069
                mov     [esp+38h], ebp
24070
                mov     [esp+3Ch], esi
24071
                mov     [esp+40h], eax
24072
            @@_loop_start:
24073
                mov     esi, [esp+8Ch]
24074
                dec     ecx
24075
                mov     ebp, [esp+90h]
24076
                mov     [esp+9Ch], ecx
24077
                mov     edx, [esi]
24078
                mov     eax, edx
24079
                mov     ecx, edx
24080
                add     edx, 10h
24081
                dec     eax
24082
                add     ecx, 4
24083
                and     edx, 1Fh
24084
                and     eax, 1Fh
24085
                and     ecx, 1Fh
24086
                shl     edx, 5
24087
                mov     [esi], eax
24088
                shl     ecx, 5
24089
                mov     ebx, eax
24090
                shl     eax, 5
24091
                add     edx, ebp
24092
                add     ebx, 19h
24093
                add     eax, ebp
24094
                and     ebx, 1Fh
24095
                add     ecx, ebp
24096
                shl     ebx, 5
24097
                mov     [esp+98h], edx
24098
                add     ebx, ebp
24099
                mov     [esp+94h], ecx
24100
                mov     ecx, [ebx]
24101
                mov     edx, [eax+8]
24102
                mov     edi, [ebx+4]
24103
                mov     ebp, [eax+0Ch]
24104
                xor     ecx, edx
24105
                xor     edi, ebp
24106
                mov     [ebx], ecx
24107
                mov     [ebx+4], edi
24108
                mov     ecx, [ebx+8]
24109
                mov     edx, [eax+10h]
24110
                mov     edi, [ebx+0Ch]
24111
                mov     ebp, [eax+14h]
24112
                xor     ecx, edx
24113
                xor     edi, ebp
24114
                mov     [ebx+8], ecx
24115
                mov     [ebx+0Ch], edi
24116
                mov     ecx, [ebx+10h]
24117
                mov     edx, [eax+18h]
24118
                mov     edi, [ebx+14h]
24119
                mov     ebp, [eax+1Ch]
24120
                xor     ecx, edx
24121
                xor     edi, ebp
24122
                mov     [ebx+10h], ecx
24123
                mov     [ebx+14h], edi
24124
                mov     ecx, [ebx+18h]
24125
                mov     edx, [eax]
24126
                mov     edi, [ebx+1Ch]
24127
                mov     ebp, [eax+4]
24128
                xor     ecx, edx
24129
                xor     edi, ebp
24130
                mov     [ebx+18h], ecx
24131
                mov     [ebx+1Ch], edi
24132
                mov     ecx, [eax]
24133
                mov     edx, [esp+4]
24134
                mov     edi, [eax+4]
24135
                mov     ebp, [esp+8]
24136
                xor     ecx, edx
24137
                xor     edi, ebp
24138
                mov     [eax], ecx
24139
                mov     [eax+4], edi
24140
                mov     ecx, [eax+8]
24141
                mov     edx, [esp+0Ch]
24142
                mov     edi, [eax+0Ch]
24143
                mov     ebp, [esp+10h]
24144
                xor     ecx, edx
24145
                xor     edi, ebp
24146
                mov     [eax+8], ecx
24147
                mov     [eax+0Ch], edi
24148
                mov     ecx, [eax+10h]
24149
                mov     edx, [esp+14h]
24150
                mov     edi, [eax+14h]
24151
                mov     ebp, [esp+18h]
24152
                xor     ecx, edx
24153
                xor     edi, ebp
24154
                mov     [eax+10h], ecx
24155
                mov     [eax+14h], edi
24156
                mov     ecx, [eax+18h]
24157
                mov     edx, [esp+1Ch]
24158
                mov     edi, [eax+1Ch]
24159
                mov     ebp, [esp+20h]
24160
                xor     ecx, edx
24161
                xor     edi, ebp
24162
                mov     [eax+18h], ecx
24163
                mov     [eax+1Ch], edi
24164
                mov     eax, [esp]
24165
                mov     ebx, [esp+4]
24166
                mov     ecx, [esp+8]
24167
                mov     esi, ecx
24168
                xor     ecx, 0FFFFFFFFh
24169
                mov     ebp, ebx
24170
                or      ecx, ebx
24171
                xor     ecx, eax
24172
                mov     [esp+44h], ecx
24173
                mov     ecx, [esp+0Ch]
24174
                mov     edx, [esp+10h]
24175
                mov     eax, ecx
24176
                xor     ecx, 0FFFFFFFFh
24177
                mov     ebx, edx
24178
                xor     edx, 0FFFFFFFFh
24179
                or      ecx, esi
24180
                or      edx, eax
24181
                xor     ebp, ecx
24182
                mov     ecx, [esp+14h]
24183
                rol     ebp, 0Fh
24184
                xor     esi, edx
24185
                mov     edx, [esp+18h]
24186
                ror     esi, 9
24187
                mov     [esp+58h], ebp
24188
                mov     ebp, ecx
24189
                xor     ecx, 0FFFFFFFFh
24190
                mov     [esp+6Ch], esi
24191
                mov     esi, edx
24192
                xor     edx, 0FFFFFFFFh
24193
                or      ecx, ebx
24194
                or      edx, ebp
24195
                xor     eax, ecx
24196
                mov     ecx, [esp+1Ch]
24197
                ror     eax, 8
24198
                xor     ebx, edx
24199
                mov     edx, [esp+20h]
24200
                rol     ebx, 6
24201
                mov     [esp+80h], eax
24202
                mov     eax, ecx
24203
                xor     ecx, 0FFFFFFFFh
24204
                mov     [esp+50h], ebx
24205
                mov     ebx, edx
24206
                xor     edx, 0FFFFFFFFh
24207
                or      ecx, esi
24208
                or      edx, eax
24209
                xor     ebp, ecx
24210
                mov     ecx, [esp+24h]
24211
                rol     ebp, 4
24212
                xor     esi, edx
24213
                mov     edx, [esp+28h]
24214
                ror     esi, 5
24215
                mov     [esp+64h], ebp
24216
                mov     ebp, ecx
24217
                xor     ecx, 0FFFFFFFFh
24218
                mov     [esp+78h], esi
24219
                mov     esi, edx
24220
                xor     edx, 0FFFFFFFFh
24221
                or      ecx, ebx
24222
                or      edx, ebp
24223
                xor     eax, ecx
24224
                mov     ecx, [esp+2Ch]
24225
                rol     eax, 1
24226
                xor     ebx, edx
24227
                mov     edx, [esp+30h]
24228
                ror     ebx, 0Bh
24229
                mov     [esp+48h], eax
24230
                mov     eax, ecx
24231
                xor     ecx, 0FFFFFFFFh
24232
                mov     [esp+5Ch], ebx
24233
                mov     ebx, edx
24234
                xor     edx, 0FFFFFFFFh
24235
                or      ecx, esi
24236
                or      edx, eax
24237
                xor     ebp, ecx
24238
                mov     ecx, [esp+34h]
24239
                rol     ebp, 2
24240
                xor     esi, edx
24241
                mov     edx, [esp+38h]
24242
                rol     esi, 8
24243
                mov     [esp+70h], ebp
24244
                mov     ebp, ecx
24245
                xor     ecx, 0FFFFFFFFh
24246
                mov     [esp+84h], esi
24247
                mov     esi, edx
24248
                xor     edx, 0FFFFFFFFh
24249
                or      ecx, ebx
24250
                or      edx, ebp
24251
                xor     eax, ecx
24252
                mov     ecx, [esp+3Ch]
24253
                rol     eax, 0Ah
24254
                xor     ebx, edx
24255
                mov     edx, [esp+40h]
24256
                rol     ebx, 0Dh
24257
                mov     [esp+54h], eax
24258
                mov     eax, ecx
24259
                xor     ecx, 0FFFFFFFFh
24260
                mov     [esp+68h], ebx
24261
                mov     ebx, edx
24262
                xor     edx, 0FFFFFFFFh
24263
                or      ecx, esi
24264
                or      edx, eax
24265
                xor     ebp, ecx
24266
                mov     ecx, [esp]
24267
                rol     ebp, 9
24268
                xor     esi, edx
24269
                mov     edx, [esp+4]
24270
                rol     esi, 3
24271
                mov     [esp+7Ch], ebp
24272
                mov     ebp, ecx
24273
                xor     ecx, 0FFFFFFFFh
24274
                mov     [esp+4Ch], esi
24275
                mov     esi, edx
24276
                xor     edx, 0FFFFFFFFh
24277
                or      ecx, ebx
24278
                or      edx, ebp
24279
                xor     eax, ecx
24280
                xor     ebx, edx
24281
                ror     eax, 4
24282
                rol     ebx, 0Eh
24283
                mov     [esp+60h], eax
24284
                mov     [esp+74h], ebx
24285
                mov     eax, [esp+44h]
24286
                mov     ebx, [esp+48h]
24287
                mov     ecx, [esp+4Ch]
24288
                xor     eax, 1
24289
                mov     edx, [esp+50h]
24290
                xor     eax, ebx
24291
                mov     ebp, [esp+54h]
24292
                xor     eax, ebp
24293
                mov     esi, [esp+94h]
24294
                mov     [esp], eax
24295
                xor     ebx, ecx
24296
                mov     eax, [esp+58h]
24297
                xor     ecx, edx
24298
                mov     edi, [esp+5Ch]
24299
                xor     ebx, eax
24300
                xor     ecx, edi
24301
                xor     ebx, [esi]
24302
                xor     ecx, [esi+4]
24303
                mov     [esp+4], ebx
24304
                mov     [esp+8], ecx
24305
                xor     edx, ebp
24306
                mov     ecx, [esp+60h]
24307
                xor     ebp, eax
24308
                mov     ebx, [esp+64h]
24309
                xor     edx, ecx
24310
                xor     ebp, ebx
24311
                xor     edx, [esi+8]
24312
                xor     ebp, [esi+0Ch]
24313
                mov     [esp+0Ch], edx
24314
                mov     [esp+10h], ebp
24315
                xor     eax, edi
24316
                mov     edx, [esp+68h]
24317
                xor     edi, ecx
24318
                mov     ebp, [esp+6Ch]
24319
                xor     eax, edx
24320
                xor     edi, ebp
24321
                xor     eax, [esi+10h]
24322
                xor     edi, [esi+14h]
24323
                mov     [esp+14h], eax
24324
                mov     [esp+18h], edi
24325
                xor     ecx, ebx
24326
                mov     eax, [esp+70h]
24327
                xor     ebx, edx
24328
                mov     edi, [esp+74h]
24329
                xor     ecx, eax
24330
                xor     ebx, edi
24331
                xor     ecx, [esi+18h]
24332
                xor     ebx, [esi+1Ch]
24333
                mov     [esp+1Ch], ecx
24334
                mov     [esp+20h], ebx
24335
                mov     esi, [esp+98h]
24336
                xor     edx, ebp
24337
                mov     ecx, [esp+78h]
24338
                xor     ebp, eax
24339
                mov     ebx, [esp+7Ch]
24340
                xor     edx, ecx
24341
                xor     ebp, ebx
24342
                xor     edx, [esi]
24343
                xor     ebp, [esi+4]
24344
                mov     [esp+24h], edx
24345
                mov     [esp+28h], ebp
24346
                xor     eax, edi
24347
                mov     edx, [esp+80h]
24348
                xor     edi, ecx
24349
                mov     ebp, [esp+84h]
24350
                xor     eax, edx
24351
                xor     edi, ebp
24352
                xor     eax, [esi+8]
24353
                xor     edi, [esi+0Ch]
24354
                mov     [esp+2Ch], eax
24355
                mov     [esp+30h], edi
24356
                xor     ecx, ebx
24357
                mov     eax, [esp+44h]
24358
                xor     ebx, edx
24359
                mov     edi, [esp+48h]
24360
                xor     ecx, eax
24361
                xor     ebx, edi
24362
                xor     ecx, [esi+10h]
24363
                xor     ebx, [esi+14h]
24364
                mov     [esp+34h], ecx
24365
                mov     [esp+38h], ebx
24366
                mov     ecx, [esp+4Ch]
24367
                xor     edx, ebp
24368
                mov     ebx, [esp+50h]
24369
                xor     ebp, eax
24370
                xor     edx, ecx
24371
                xor     ebp, ebx
24372
                xor     edx, [esi+18h]
24373
                xor     ebp, [esi+1Ch]
24374
                mov     [esp+3Ch], edx
24375
                mov     [esp+40h], ebp
24376
                mov     ecx, [esp+9Ch]
24377
                test    ecx, ecx
24378
                jnz     @@_loop_start
24379
                mov     edi, [esp+88h]
24380
                mov     ebp, [esp+0A0h]
24381
                mov     eax, [esp+24h]
24382
                mov     ebx, [esp+28h]
24383
                mov     [edi], eax
24384
                mov     [edi+4], ebx
24385
                mov     ecx, [esp+2Ch]
24386
                mov     edx, [esp+30h]
24387
                mov     [edi+8], ecx
24388
                mov     [edi+0Ch], edx
24389
                mov     eax, [esp+34h]
24390
                mov     ebx, [esp+38h]
24391
                mov     [edi+10h], eax
24392
                mov     [edi+14h], ebx
24393
                mov     ecx, [esp+3Ch]
24394
                mov     edx, [esp+40h]
24395
                mov     esp, ebp
24396
                mov     [edi+18h], ecx
24397
                mov     [edi+1Ch], edx
24398
                pop     ebp
24399
                pop     edi
24400
                pop     esi
24401
                pop     ebx
24402
end;
24403
24404
procedure THash_Panama.DoTransform(Buffer: PUInt32Array);
24405
asm
24406
                push    ebx
24407
                push    esi
24408
                mov     esi, edx
24409
                push    edi
24410
                lea     edi, [eax].THash_Panama.FDigest
24411
                lea     edx, [eax].THash_Panama.FTap
24412
                push    ebp
24413
                lea     eax, [eax].THash_Panama.FLFSRBuffer
24414
24415
                mov     ebp, esp
24416
                add     esp, 0FFFFFF5Ch
24417
                and     esp, 0FFFFFFE0h
24418
                mov     [esp+88h], edi
24419
                mov     [esp+8Ch], esi
24420
                mov     [esp+90h], edx
24421
                mov     [esp+94h], eax
24422
                mov     [esp+0A0h], ebp
24423
                mov     eax, [edi]
24424
                mov     ebx, [edi+4]
24425
                mov     [esp], eax
24426
                mov     [esp+4], ebx
24427
                mov     ebp, [edi+8]
24428
                mov     esi, [edi+0Ch]
24429
                mov     [esp+8], ebp
24430
                mov     [esp+0Ch], esi
24431
                mov     eax, [edi+10h]
24432
                mov     ebx, [edi+14h]
24433
                mov     [esp+10h], eax
24434
                mov     [esp+14h], ebx
24435
                mov     ebp, [edi+18h]
24436
                mov     esi, [edi+1Ch]
24437
                mov     [esp+18h], ebp
24438
                mov     [esp+1Ch], esi
24439
                mov     eax, [edi+20h]
24440
                mov     ebx, [edi+24h]
24441
                mov     [esp+20h], eax
24442
                mov     [esp+24h], ebx
24443
                mov     ebp, [edi+28h]
24444
                mov     esi, [edi+2Ch]
24445
                mov     [esp+28h], ebp
24446
                mov     [esp+2Ch], esi
24447
                mov     eax, [edi+30h]
24448
                mov     ebx, [edi+34h]
24449
                mov     [esp+30h], eax
24450
                mov     [esp+34h], ebx
24451
                mov     ebp, [edi+38h]
24452
                mov     esi, [edi+3Ch]
24453
                mov     eax, [edi+40h]
24454
                mov     [esp+38h], ebp
24455
                mov     [esp+3Ch], esi
24456
                mov     [esp+40h], eax
24457
24458
                mov     eax, [esp]
24459
                mov     ebx, [esp+4]
24460
                mov     ecx, [esp+8]
24461
                mov     esi, ecx
24462
                xor     ecx, 0FFFFFFFFh
24463
                mov     ebp, ebx
24464
                or      ecx, ebx
24465
                xor     ecx, eax
24466
                mov     [esp+44h], ecx
24467
                mov     ecx, [esp+0Ch]
24468
                mov     edx, [esp+10h]
24469
                mov     eax, ecx
24470
                xor     ecx, 0FFFFFFFFh
24471
                mov     ebx, edx
24472
                xor     edx, 0FFFFFFFFh
24473
                or      ecx, esi
24474
                or      edx, eax
24475
                xor     ebp, ecx
24476
                mov     ecx, [esp+14h]
24477
                rol     ebp, 0Fh
24478
                xor     esi, edx
24479
                mov     edx, [esp+18h]
24480
                ror     esi, 9
24481
                mov     [esp+58h], ebp
24482
                mov     ebp, ecx
24483
                xor     ecx, 0FFFFFFFFh
24484
                mov     [esp+6Ch], esi
24485
                mov     esi, edx
24486
                xor     edx, 0FFFFFFFFh
24487
                or      ecx, ebx
24488
                or      edx, ebp
24489
                xor     eax, ecx
24490
                mov     ecx, [esp+1Ch]
24491
                ror     eax, 8
24492
                xor     ebx, edx
24493
                mov     edx, [esp+20h]
24494
                rol     ebx, 6
24495
                mov     [esp+80h], eax
24496
                mov     eax, ecx
24497
                xor     ecx, 0FFFFFFFFh
24498
                mov     [esp+50h], ebx
24499
                mov     ebx, edx
24500
                xor     edx, 0FFFFFFFFh
24501
                or      ecx, esi
24502
                or      edx, eax
24503
                xor     ebp, ecx
24504
                mov     ecx, [esp+24h]
24505
                rol     ebp, 4
24506
                xor     esi, edx
24507
                mov     edx, [esp+28h]
24508
                ror     esi, 5
24509
                mov     [esp+64h], ebp
24510
                mov     ebp, ecx
24511
                xor     ecx, 0FFFFFFFFh
24512
                mov     [esp+78h], esi
24513
                mov     esi, edx
24514
                xor     edx, 0FFFFFFFFh
24515
                or      ecx, ebx
24516
                or      edx, ebp
24517
                xor     eax, ecx
24518
                mov     ecx, [esp+2Ch]
24519
                rol     eax, 1
24520
                xor     ebx, edx
24521
                mov     edx, [esp+30h]
24522
                ror     ebx, 0Bh
24523
                mov     [esp+48h], eax
24524
                mov     eax, ecx
24525
                xor     ecx, 0FFFFFFFFh
24526
                mov     [esp+5Ch], ebx
24527
                mov     ebx, edx
24528
                xor     edx, 0FFFFFFFFh
24529
                or      ecx, esi
24530
                or      edx, eax
24531
                xor     ebp, ecx
24532
                mov     ecx, [esp+34h]
24533
                rol     ebp, 2
24534
                xor     esi, edx
24535
                mov     edx, [esp+38h]
24536
                rol     esi, 8
24537
                mov     [esp+70h], ebp
24538
                mov     ebp, ecx
24539
                xor     ecx, 0FFFFFFFFh
24540
                mov     [esp+84h], esi
24541
                mov     esi, edx
24542
                xor     edx, 0FFFFFFFFh
24543
                or      ecx, ebx
24544
                or      edx, ebp
24545
                xor     eax, ecx
24546
                mov     ecx, [esp+3Ch]
24547
                rol     eax, 0Ah
24548
                xor     ebx, edx
24549
                mov     edx, [esp+40h]
24550
                rol     ebx, 0Dh
24551
                mov     [esp+54h], eax
24552
                mov     eax, ecx
24553
                xor     ecx, 0FFFFFFFFh
24554
                mov     [esp+68h], ebx
24555
                mov     ebx, edx
24556
                xor     edx, 0FFFFFFFFh
24557
                or      ecx, esi
24558
                or      edx, eax
24559
                xor     ebp, ecx
24560
                mov     ecx, [esp]
24561
                rol     ebp, 9
24562
                xor     esi, edx
24563
                mov     edx, [esp+4]
24564
                rol     esi, 3
24565
                mov     [esp+7Ch], ebp
24566
                mov     ebp, ecx
24567
                xor     ecx, 0FFFFFFFFh
24568
                mov     [esp+4Ch], esi
24569
                mov     esi, edx
24570
                xor     edx, 0FFFFFFFFh
24571
                or      ecx, ebx
24572
                or      edx, ebp
24573
                xor     eax, ecx
24574
                xor     ebx, edx
24575
                ror     eax, 4
24576
                rol     ebx, 0Eh
24577
                mov     [esp+60h], eax
24578
                mov     [esp+74h], ebx
24579
                mov     esi, [esp+90h]
24580
                mov     ebp, [esp+94h]
24581
                mov     edx, [esi]
24582
                mov     eax, edx
24583
                add     edx, 10h
24584
                dec     eax
24585
                and     edx, 1Fh
24586
                and     eax, 1Fh
24587
                shl     edx, 5
24588
                mov     [esi], eax
24589
                add     edx, ebp
24590
                mov     ebx, eax
24591
                shl     eax, 5
24592
                add     ebx, 19h
24593
                add     eax, ebp
24594
                and     ebx, 1Fh
24595
                shl     ebx, 5
24596
                mov     [esp+98h], edx
24597
                add     ebx, ebp
24598
                mov     ecx, [ebx]
24599
                mov     edx, [eax+8]
24600
                mov     edi, [ebx+4]
24601
                mov     ebp, [eax+0Ch]
24602
                xor     ecx, edx
24603
                xor     edi, ebp
24604
                mov     [ebx], ecx
24605
                mov     [ebx+4], edi
24606
                mov     ecx, [ebx+8]
24607
                mov     edx, [eax+10h]
24608
                mov     edi, [ebx+0Ch]
24609
                mov     ebp, [eax+14h]
24610
                xor     ecx, edx
24611
                xor     edi, ebp
24612
                mov     [ebx+8], ecx
24613
                mov     [ebx+0Ch], edi
24614
                mov     ecx, [ebx+10h]
24615
                mov     edx, [eax+18h]
24616
                mov     edi, [ebx+14h]
24617
                mov     ebp, [eax+1Ch]
24618
                xor     ecx, edx
24619
                xor     edi, ebp
24620
                mov     [ebx+10h], ecx
24621
                mov     [ebx+14h], edi
24622
                mov     ecx, [ebx+18h]
24623
                mov     edx, [eax]
24624
                mov     edi, [ebx+1Ch]
24625
                mov     ebp, [eax+4]
24626
                xor     ecx, edx
24627
                xor     edi, ebp
24628
                mov     [ebx+18h], ecx
24629
                mov     [ebx+1Ch], edi
24630
                mov     ebx, [esp+8Ch]
24631
                mov     ecx, [eax]
24632
                mov     edx, [ebx]
24633
                mov     edi, [eax+4]
24634
                mov     ebp, [ebx+4]
24635
                xor     ecx, edx
24636
                xor     edi, ebp
24637
                mov     [eax], ecx
24638
                mov     [eax+4], edi
24639
                mov     ecx, [eax+8]
24640
                mov     edx, [ebx+8]
24641
                mov     edi, [eax+0Ch]
24642
                mov     ebp, [ebx+0Ch]
24643
                xor     ecx, edx
24644
                xor     edi, ebp
24645
                mov     [eax+8], ecx
24646
                mov     [eax+0Ch], edi
24647
                mov     ecx, [eax+10h]
24648
                mov     edx, [ebx+10h]
24649
                mov     edi, [eax+14h]
24650
                mov     ebp, [ebx+14h]
24651
                xor     ecx, edx
24652
                xor     edi, ebp
24653
                mov     [eax+10h], ecx
24654
                mov     [eax+14h], edi
24655
                mov     ecx, [eax+18h]
24656
                mov     edx, [ebx+18h]
24657
                mov     edi, [eax+1Ch]
24658
                mov     ebp, [ebx+1Ch]
24659
                xor     ecx, edx
24660
                xor     edi, ebp
24661
                mov     [eax+18h], ecx
24662
                mov     [eax+1Ch], edi
24663
                mov     eax, [esp+44h]
24664
                mov     ebx, [esp+48h]
24665
                mov     ecx, [esp+4Ch]
24666
                xor     eax, 1
24667
                mov     edx, [esp+50h]
24668
                xor     eax, ebx
24669
                mov     ebp, [esp+54h]
24670
                xor     eax, ebp
24671
                mov     esi, [esp+8Ch]
24672
                mov     [esp], eax
24673
                xor     ebx, ecx
24674
                mov     eax, [esp+58h]
24675
                xor     ecx, edx
24676
                mov     edi, [esp+5Ch]
24677
                xor     ebx, eax
24678
                xor     ecx, edi
24679
                xor     ebx, [esi]
24680
                xor     ecx, [esi+4]
24681
                mov     [esp+4], ebx
24682
                mov     [esp+8], ecx
24683
                xor     edx, ebp
24684
                mov     ecx, [esp+60h]
24685
                xor     ebp, eax
24686
                mov     ebx, [esp+64h]
24687
                xor     edx, ecx
24688
                xor     ebp, ebx
24689
                xor     edx, [esi+8]
24690
                xor     ebp, [esi+0Ch]
24691
                mov     [esp+0Ch], edx
24692
                mov     [esp+10h], ebp
24693
                xor     eax, edi
24694
                mov     edx, [esp+68h]
24695
                xor     edi, ecx
24696
                mov     ebp, [esp+6Ch]
24697
                xor     eax, edx
24698
                xor     edi, ebp
24699
                xor     eax, [esi+10h]
24700
                xor     edi, [esi+14h]
24701
                mov     [esp+14h], eax
24702
                mov     [esp+18h], edi
24703
                xor     ecx, ebx
24704
                mov     eax, [esp+70h]
24705
                xor     ebx, edx
24706
                mov     edi, [esp+74h]
24707
                xor     ecx, eax
24708
                xor     ebx, edi
24709
                xor     ecx, [esi+18h]
24710
                xor     ebx, [esi+1Ch]
24711
                add     esi, 20h
24712
                mov     [esp+1Ch], ecx
24713
                mov     [esp+20h], ebx
24714
                mov     [esp+8Ch], esi
24715
                mov     esi, [esp+98h]
24716
                xor     edx, ebp
24717
                mov     ecx, [esp+78h]
24718
                xor     ebp, eax
24719
                mov     ebx, [esp+7Ch]
24720
                xor     edx, ecx
24721
                xor     ebp, ebx
24722
                xor     edx, [esi]
24723
                xor     ebp, [esi+4]
24724
                mov     [esp+24h], edx
24725
                mov     [esp+28h], ebp
24726
                xor     eax, edi
24727
                mov     edx, [esp+80h]
24728
                xor     edi, ecx
24729
                mov     ebp, [esp+84h]
24730
                xor     eax, edx
24731
                xor     edi, ebp
24732
                xor     eax, [esi+8]
24733
                xor     edi, [esi+0Ch]
24734
                mov     [esp+2Ch], eax
24735
                mov     [esp+30h], edi
24736
                xor     ecx, ebx
24737
                mov     eax, [esp+44h]
24738
                xor     ebx, edx
24739
                mov     edi, [esp+48h]
24740
                xor     ecx, eax
24741
                xor     ebx, edi
24742
                xor     ecx, [esi+10h]
24743
                xor     ebx, [esi+14h]
24744
                mov     [esp+34h], ecx
24745
                mov     [esp+38h], ebx
24746
                mov     ecx, [esp+4Ch]
24747
                xor     edx, ebp
24748
                mov     ebx, [esp+50h]
24749
                xor     ebp, eax
24750
                xor     edx, ecx
24751
                xor     ebp, ebx
24752
                xor     edx, [esi+18h]
24753
                xor     ebp, [esi+1Ch]
24754
                mov     [esp+3Ch], edx
24755
                mov     [esp+40h], ebp
24756
24757
                mov     edi, [esp+88h]
24758
                mov     eax, [esp]
24759
                mov     ebx, [esp+4]
24760
                mov     [edi], eax
24761
                mov     [edi+4], ebx
24762
                mov     ebp, [esp+8]
24763
                mov     esi, [esp+0Ch]
24764
                mov     [edi+8], ebp
24765
                mov     [edi+0Ch], esi
24766
                mov     eax, [esp+10h]
24767
                mov     ebx, [esp+14h]
24768
                mov     [edi+10h], eax
24769
                mov     [edi+14h], ebx
24770
                mov     ebp, [esp+18h]
24771
                mov     esi, [esp+1Ch]
24772
                mov     [edi+18h], ebp
24773
                mov     [edi+1Ch], esi
24774
                mov     eax, [esp+20h]
24775
                mov     ebx, [esp+24h]
24776
                mov     [edi+20h], eax
24777
                mov     [edi+24h], ebx
24778
                mov     ebp, [esp+28h]
24779
                mov     esi, [esp+2Ch]
24780
                mov     [edi+28h], ebp
24781
                mov     [edi+2Ch], esi
24782
                mov     eax, [esp+30h]
24783
                mov     ebx, [esp+34h]
24784
                mov     [edi+30h], eax
24785
                mov     [edi+34h], ebx
24786
                mov     ebp, [esp+38h]
24787
                mov     esi, [esp+3Ch]
24788
                mov     eax, [esp+40h]
24789
                mov     [edi+38h], ebp
24790
                mov     [edi+3Ch], esi
24791
                mov     [edi+40h], eax
24792
                mov     ebp, [esp+0A0h]
24793
                mov     esp, ebp
24794
                pop     ebp
24795
                pop     edi
24796
                pop     esi
24797
                pop     ebx
24798
end;
24799
{$ENDIF}
24800
24801
{$IFDEF THashBaseWhirlpool_asm}
24802
procedure THashBaseWhirlpool.DoTransform(Buffer: PUInt32Array);
24803
asm
24804
                push    ebx
24805
                push    esi
24806
                push    edi
24807
                mov     esi, edx
24808
                lea     edi, [eax].THashBaseWhirlpool.FDigest
24809
                push    ebp
24810
                mov     ebx, [eax].THashBaseWhirlpool.FTableC
24811
                mov     eax, [eax].THashBaseWhirlpool.FTableR
24812
24813
                mov     ebp, esp
24814
                add     esp, 0FFFFFEE8h
24815
                and     esp, 0FFFFFFE0h
24816
                mov     [esp+100h], eax
24817
                mov     [esp+104h], ebx
24818
                mov     [esp+10Ch], edi
24819
                mov     [esp+110h], esi
24820
                mov     [esp+114h], ebp
24821
                xor     ebp, ebp
24822
                mov     eax, [edi]
24823
                mov     ebx, [edi+4]
24824
                mov     [esp+40h], eax
24825
                mov     ecx, [esi]
24826
                mov     edx, [esi+4]
24827
                mov     [esp+44h], ebx
24828
                xor     eax, ecx
24829
                xor     ebx, edx
24830
                mov     [esp], eax
24831
                mov     [esp+4], ebx
24832
                mov     eax, [edi+8]
24833
                mov     ebx, [edi+0Ch]
24834
                mov     [esp+48h], eax
24835
                mov     ecx, [esi+8]
24836
                mov     edx, [esi+0Ch]
24837
                mov     [esp+4Ch], ebx
24838
                xor     eax, ecx
24839
                xor     ebx, edx
24840
                mov     [esp+8], eax
24841
                mov     [esp+0Ch], ebx
24842
                mov     eax, [edi+10h]
24843
                mov     ebx, [edi+14h]
24844
                mov     [esp+50h], eax
24845
                mov     ecx, [esi+10h]
24846
                mov     edx, [esi+14h]
24847
                mov     [esp+54h], ebx
24848
                xor     eax, ecx
24849
                xor     ebx, edx
24850
                mov     [esp+10h], eax
24851
                mov     [esp+14h], ebx
24852
                mov     eax, [edi+18h]
24853
                mov     ebx, [edi+1Ch]
24854
                mov     [esp+58h], eax
24855
                mov     ecx, [esi+18h]
24856
                mov     edx, [esi+1Ch]
24857
                mov     [esp+5Ch], ebx
24858
                xor     eax, ecx
24859
                xor     ebx, edx
24860
                mov     [esp+18h], eax
24861
                mov     [esp+1Ch], ebx
24862
                mov     eax, [edi+20h]
24863
                mov     ebx, [edi+24h]
24864
                mov     [esp+60h], eax
24865
                mov     ecx, [esi+20h]
24866
                mov     edx, [esi+24h]
24867
                mov     [esp+64h], ebx
24868
                xor     eax, ecx
24869
                xor     ebx, edx
24870
                mov     [esp+20h], eax
24871
                mov     [esp+24h], ebx
24872
                mov     eax, [edi+28h]
24873
                mov     ebx, [edi+2Ch]
24874
                mov     [esp+68h], eax
24875
                mov     ecx, [esi+28h]
24876
                mov     edx, [esi+2Ch]
24877
                mov     [esp+6Ch], ebx
24878
                xor     eax, ecx
24879
                xor     ebx, edx
24880
                mov     [esp+28h], eax
24881
                mov     [esp+2Ch], ebx
24882
                mov     eax, [edi+30h]
24883
                mov     ebx, [edi+34h]
24884
                mov     [esp+70h], eax
24885
                mov     ecx, [esi+30h]
24886
                mov     edx, [esi+34h]
24887
                mov     [esp+74h], ebx
24888
                xor     eax, ecx
24889
                xor     ebx, edx
24890
                mov     [esp+30h], eax
24891
                mov     [esp+34h], ebx
24892
                mov     eax, [edi+38h]
24893
                mov     ebx, [edi+3Ch]
24894
                mov     [esp+78h], eax
24895
                mov     ecx, [esi+38h]
24896
                mov     edx, [esi+3Ch]
24897
                mov     [esp+7Ch], ebx
24898
                xor     eax, ecx
24899
                xor     ebx, edx
24900
                mov     [esp+38h], eax
24901
                mov     [esp+3Ch], ebx
24902
24903
            @@_loop_start:
24904
                mov     [esp+108h], ebp
24905
                mov     edi, [esp+100h]
24906
                mov     esi, [esp+104h]
24907
                mov     eax, [edi+ebp]
24908
                mov     ebx, [edi+ebp+4]
24909
                mov     ecx, [esp+40h]
24910
                mov     edx, [esp+78h]
24911
                and     ecx, 0FFh
24912
                shr     edx, 5
24913
                mov     edi, [esi+ecx*8]
24914
                and     edx, 7F8h
24915
                mov     ebp, [esi+ecx*8+4]
24916
                xor     eax, edi
24917
                mov     ecx, [esp+70h]
24918
                mov     edi, [esi+edx+800h]
24919
                xor     ebx, ebp
24920
                shr     ecx, 0Dh
24921
                mov     ebp, [esi+edx+804h]
24922
                and     ecx, 7F8h
24923
                xor     eax, edi
24924
                mov     edx, [esp+68h]
24925
                xor     ebx, ebp
24926
                shr     edx, 18h
24927
                mov     edi, [esi+ecx+1000h]
24928
                mov     ebp, [esi+ecx+1004h]
24929
                xor     eax, edi
24930
                mov     edi, [esi+edx*8+1800h]
24931
                xor     ebx, ebp
24932
                mov     ebp, [esi+edx*8+1804h]
24933
                xor     eax, edi
24934
                xor     ebx, ebp
24935
                mov     ecx, [esp+64h]
24936
                mov     edx, [esp+5Ch]
24937
                and     ecx, 0FFh
24938
                shr     edx, 5
24939
                mov     edi, [esi+ecx*8+2000h]
24940
                and     edx, 7F8h
24941
                mov     ebp, [esi+ecx*8+2004h]
24942
                xor     eax, edi
24943
                mov     ecx, [esp+54h]
24944
                mov     edi, [esi+edx+2800h]
24945
                xor     ebx, ebp
24946
                shr     ecx, 0Dh
24947
                mov     ebp, [esi+edx+2804h]
24948
                and     ecx, 7F8h
24949
                xor     eax, edi
24950
                mov     edx, [esp+4Ch]
24951
                xor     ebx, ebp
24952
                shr     edx, 18h
24953
                mov     edi, [esi+ecx+3000h]
24954
                mov     ebp, [esi+ecx+3004h]
24955
                xor     eax, edi
24956
                mov     edi, [esi+edx*8+3800h]
24957
                xor     ebx, ebp
24958
                mov     ebp, [esi+edx*8+3804h]
24959
                xor     eax, edi
24960
                xor     ebx, ebp
24961
                mov     [esp+80h], eax
24962
                mov     [esp+84h], ebx
24963
                mov     ecx, [esp+48h]
24964
                mov     edx, [esp+40h]
24965
                and     ecx, 0FFh
24966
                shr     edx, 5
24967
                mov     eax, [esi+ecx*8]
24968
                and     edx, 7F8h
24969
                mov     ebx, [esi+ecx*8+4]
24970
                mov     ecx, [esp+78h]
24971
                mov     edi, [esi+edx+800h]
24972
                shr     ecx, 0Dh
24973
                mov     ebp, [esi+edx+804h]
24974
                and     ecx, 7F8h
24975
                mov     edx, [esp+70h]
24976
                xor     eax, edi
24977
                xor     ebx, ebp
24978
                shr     edx, 18h
24979
                mov     edi, [esi+ecx+1000h]
24980
                mov     ebp, [esi+ecx+1004h]
24981
                mov     ecx, [esp+6Ch]
24982
                xor     eax, edi
24983
                mov     edi, [esi+edx*8+1800h]
24984
                and     ecx, 0FFh
24985
                xor     ebx, ebp
24986
                mov     ebp, [esi+edx*8+1804h]
24987
                mov     edx, [esp+64h]
24988
                xor     eax, edi
24989
                xor     ebx, ebp
24990
                shr     edx, 5
24991
                mov     edi, [esi+ecx*8+2000h]
24992
                mov     ebp, [esi+ecx*8+2004h]
24993
                and     edx, 7F8h
24994
                mov     ecx, [esp+5Ch]
24995
                xor     eax, edi
24996
                shr     ecx, 0Dh
24997
                xor     ebx, ebp
24998
                mov     edi, [esi+edx+2800h]
24999
                and     ecx, 7F8h
25000
                mov     ebp, [esi+edx+2804h]
25001
                xor     eax, edi
25002
                mov     edx, [esp+54h]
25003
                xor     ebx, ebp
25004
                shr     edx, 18h
25005
                mov     edi, [esi+ecx+3000h]
25006
                mov     ebp, [esi+ecx+3004h]
25007
                xor     eax, edi
25008
                mov     edi, [esi+edx*8+3800h]
25009
                xor     ebx, ebp
25010
                mov     ebp, [esi+edx*8+3804h]
25011
                xor     eax, edi
25012
                xor     ebx, ebp
25013
                mov     [esp+88h], eax
25014
                mov     [esp+8Ch], ebx
25015
                mov     ecx, [esp+50h]
25016
                mov     edx, [esp+48h]
25017
                and     ecx, 0FFh
25018
                shr     edx, 5
25019
                mov     eax, [esi+ecx*8]
25020
                and     edx, 7F8h
25021
                mov     ebx, [esi+ecx*8+4]
25022
                mov     ecx, [esp+40h]
25023
                mov     edi, [esi+edx+800h]
25024
                shr     ecx, 0Dh
25025
                mov     ebp, [esi+edx+804h]
25026
                and     ecx, 7F8h
25027
                mov     edx, [esp+78h]
25028
                xor     eax, edi
25029
                xor     ebx, ebp
25030
                shr     edx, 18h
25031
                mov     edi, [esi+ecx+1000h]
25032
                mov     ebp, [esi+ecx+1004h]
25033
                mov     ecx, [esp+74h]
25034
                xor     eax, edi
25035
                mov     edi, [esi+edx*8+1800h]
25036
                and     ecx, 0FFh
25037
                xor     ebx, ebp
25038
                mov     ebp, [esi+edx*8+1804h]
25039
                mov     edx, [esp+6Ch]
25040
                xor     eax, edi
25041
                xor     ebx, ebp
25042
                shr     edx, 5
25043
                mov     edi, [esi+ecx*8+2000h]
25044
                mov     ebp, [esi+ecx*8+2004h]
25045
                and     edx, 7F8h
25046
                mov     ecx, [esp+64h]
25047
                xor     eax, edi
25048
                shr     ecx, 0Dh
25049
                xor     ebx, ebp
25050
                mov     edi, [esi+edx+2800h]
25051
                and     ecx, 7F8h
25052
                mov     ebp, [esi+edx+2804h]
25053
                xor     eax, edi
25054
                mov     edx, [esp+5Ch]
25055
                xor     ebx, ebp
25056
                shr     edx, 18h
25057
                mov     edi, [esi+ecx+3000h]
25058
                mov     ebp, [esi+ecx+3004h]
25059
                xor     eax, edi
25060
                mov     edi, [esi+edx*8+3800h]
25061
                xor     ebx, ebp
25062
                mov     ebp, [esi+edx*8+3804h]
25063
                xor     eax, edi
25064
                xor     ebx, ebp
25065
                mov     [esp+90h], eax
25066
                mov     [esp+94h], ebx
25067
                mov     ecx, [esp+58h]
25068
                mov     edx, [esp+50h]
25069
                and     ecx, 0FFh
25070
                shr     edx, 5
25071
                mov     eax, [esi+ecx*8]
25072
                and     edx, 7F8h
25073
                mov     ebx, [esi+ecx*8+4]
25074
                mov     ecx, [esp+48h]
25075
                mov     edi, [esi+edx+800h]
25076
                shr     ecx, 0Dh
25077
                mov     ebp, [esi+edx+804h]
25078
                and     ecx, 7F8h
25079
                mov     edx, [esp+40h]
25080
                xor     eax, edi
25081
                xor     ebx, ebp
25082
                shr     edx, 18h
25083
                mov     edi, [esi+ecx+1000h]
25084
                mov     ebp, [esi+ecx+1004h]
25085
                mov     ecx, [esp+7Ch]
25086
                xor     eax, edi
25087
                mov     edi, [esi+edx*8+1800h]
25088
                and     ecx, 0FFh
25089
                xor     ebx, ebp
25090
                mov     ebp, [esi+edx*8+1804h]
25091
                mov     edx, [esp+74h]
25092
                xor     eax, edi
25093
                xor     ebx, ebp
25094
                shr     edx, 5
25095
                mov     edi, [esi+ecx*8+2000h]
25096
                mov     ebp, [esi+ecx*8+2004h]
25097
                and     edx, 7F8h
25098
                mov     ecx, [esp+6Ch]
25099
                xor     eax, edi
25100
                shr     ecx, 0Dh
25101
                xor     ebx, ebp
25102
                mov     edi, [esi+edx+2800h]
25103
                and     ecx, 7F8h
25104
                mov     ebp, [esi+edx+2804h]
25105
                xor     eax, edi
25106
                mov     edx, [esp+64h]
25107
                xor     ebx, ebp
25108
                shr     edx, 18h
25109
                mov     edi, [esi+ecx+3000h]
25110
                mov     ebp, [esi+ecx+3004h]
25111
                xor     eax, edi
25112
                mov     edi, [esi+edx*8+3800h]
25113
                xor     ebx, ebp
25114
                mov     ebp, [esi+edx*8+3804h]
25115
                xor     eax, edi
25116
                xor     ebx, ebp
25117
                mov     [esp+98h], eax
25118
                mov     [esp+9Ch], ebx
25119
                mov     ecx, [esp+60h]
25120
                mov     edx, [esp+58h]
25121
                and     ecx, 0FFh
25122
                shr     edx, 5
25123
                mov     eax, [esi+ecx*8]
25124
                and     edx, 7F8h
25125
                mov     ebx, [esi+ecx*8+4]
25126
                mov     ecx, [esp+50h]
25127
                mov     edi, [esi+edx+800h]
25128
                shr     ecx, 0Dh
25129
                mov     ebp, [esi+edx+804h]
25130
                and     ecx, 7F8h
25131
                mov     edx, [esp+48h]
25132
                xor     eax, edi
25133
                xor     ebx, ebp
25134
                shr     edx, 18h
25135
                mov     edi, [esi+ecx+1000h]
25136
                mov     ebp, [esi+ecx+1004h]
25137
                mov     ecx, [esp+44h]
25138
                xor     eax, edi
25139
                mov     edi, [esi+edx*8+1800h]
25140
                and     ecx, 0FFh
25141
                xor     ebx, ebp
25142
                mov     ebp, [esi+edx*8+1804h]
25143
                mov     edx, [esp+7Ch]
25144
                xor     eax, edi
25145
                xor     ebx, ebp
25146
                shr     edx, 5
25147
                mov     edi, [esi+ecx*8+2000h]
25148
                mov     ebp, [esi+ecx*8+2004h]
25149
                and     edx, 7F8h
25150
                mov     ecx, [esp+74h]
25151
                xor     eax, edi
25152
                shr     ecx, 0Dh
25153
                xor     ebx, ebp
25154
                mov     edi, [esi+edx+2800h]
25155
                and     ecx, 7F8h
25156
                mov     ebp, [esi+edx+2804h]
25157
                xor     eax, edi
25158
                mov     edx, [esp+6Ch]
25159
                xor     ebx, ebp
25160
                shr     edx, 18h
25161
                mov     edi, [esi+ecx+3000h]
25162
                mov     ebp, [esi+ecx+3004h]
25163
                xor     eax, edi
25164
                mov     edi, [esi+edx*8+3800h]
25165
                xor     ebx, ebp
25166
                mov     ebp, [esi+edx*8+3804h]
25167
                xor     eax, edi
25168
                xor     ebx, ebp
25169
                mov     [esp+0A0h], eax
25170
                mov     [esp+0A4h], ebx
25171
                mov     ecx, [esp+68h]
25172
                mov     edx, [esp+60h]
25173
                and     ecx, 0FFh
25174
                shr     edx, 5
25175
                mov     eax, [esi+ecx*8]
25176
                and     edx, 7F8h
25177
                mov     ebx, [esi+ecx*8+4]
25178
                mov     ecx, [esp+58h]
25179
                mov     edi, [esi+edx+800h]
25180
                shr     ecx, 0Dh
25181
                mov     ebp, [esi+edx+804h]
25182
                and     ecx, 7F8h
25183
                mov     edx, [esp+50h]
25184
                xor     eax, edi
25185
                xor     ebx, ebp
25186
                shr     edx, 18h
25187
                mov     edi, [esi+ecx+1000h]
25188
                mov     ebp, [esi+ecx+1004h]
25189
                mov     ecx, [esp+4Ch]
25190
                xor     eax, edi
25191
                mov     edi, [esi+edx*8+1800h]
25192
                and     ecx, 0FFh
25193
                xor     ebx, ebp
25194
                mov     ebp, [esi+edx*8+1804h]
25195
                mov     edx, [esp+44h]
25196
                xor     eax, edi
25197
                xor     ebx, ebp
25198
                shr     edx, 5
25199
                mov     edi, [esi+ecx*8+2000h]
25200
                mov     ebp, [esi+ecx*8+2004h]
25201
                and     edx, 7F8h
25202
                mov     ecx, [esp+7Ch]
25203
                xor     eax, edi
25204
                shr     ecx, 0Dh
25205
                xor     ebx, ebp
25206
                mov     edi, [esi+edx+2800h]
25207
                and     ecx, 7F8h
25208
                mov     ebp, [esi+edx+2804h]
25209
                xor     eax, edi
25210
                mov     edx, [esp+74h]
25211
                xor     ebx, ebp
25212
                shr     edx, 18h
25213
                mov     edi, [esi+ecx+3000h]
25214
                mov     ebp, [esi+ecx+3004h]
25215
                xor     eax, edi
25216
                mov     edi, [esi+edx*8+3800h]
25217
                xor     ebx, ebp
25218
                mov     ebp, [esi+edx*8+3804h]
25219
                xor     eax, edi
25220
                xor     ebx, ebp
25221
                mov     [esp+0A8h], eax
25222
                mov     [esp+0ACh], ebx
25223
                mov     ecx, [esp+70h]
25224
                mov     edx, [esp+68h]
25225
                and     ecx, 0FFh
25226
                shr     edx, 5
25227
                mov     eax, [esi+ecx*8]
25228
                and     edx, 7F8h
25229
                mov     ebx, [esi+ecx*8+4]
25230
                mov     ecx, [esp+60h]
25231
                mov     edi, [esi+edx+800h]
25232
                shr     ecx, 0Dh
25233
                mov     ebp, [esi+edx+804h]
25234
                and     ecx, 7F8h
25235
                mov     edx, [esp+58h]
25236
                xor     eax, edi
25237
                xor     ebx, ebp
25238
                shr     edx, 18h
25239
                mov     edi, [esi+ecx+1000h]
25240
                mov     ebp, [esi+ecx+1004h]
25241
                mov     ecx, [esp+54h]
25242
                xor     eax, edi
25243
                mov     edi, [esi+edx*8+1800h]
25244
                and     ecx, 0FFh
25245
                xor     ebx, ebp
25246
                mov     ebp, [esi+edx*8+1804h]
25247
                mov     edx, [esp+4Ch]
25248
                xor     eax, edi
25249
                xor     ebx, ebp
25250
                shr     edx, 5
25251
                mov     edi, [esi+ecx*8+2000h]
25252
                mov     ebp, [esi+ecx*8+2004h]
25253
                and     edx, 7F8h
25254
                mov     ecx, [esp+44h]
25255
                xor     eax, edi
25256
                shr     ecx, 0Dh
25257
                xor     ebx, ebp
25258
                mov     edi, [esi+edx+2800h]
25259
                and     ecx, 7F8h
25260
                mov     ebp, [esi+edx+2804h]
25261
                xor     eax, edi
25262
                mov     edx, [esp+7Ch]
25263
                xor     ebx, ebp
25264
                shr     edx, 18h
25265
                mov     edi, [esi+ecx+3000h]
25266
                mov     ebp, [esi+ecx+3004h]
25267
                xor     eax, edi
25268
                mov     edi, [esi+edx*8+3800h]
25269
                xor     ebx, ebp
25270
                mov     ebp, [esi+edx*8+3804h]
25271
                xor     eax, edi
25272
                xor     ebx, ebp
25273
                mov     [esp+0B0h], eax
25274
                mov     [esp+0B4h], ebx
25275
                mov     ecx, [esp+78h]
25276
                mov     edx, [esp+70h]
25277
                and     ecx, 0FFh
25278
                shr     edx, 5
25279
                mov     eax, [esi+ecx*8]
25280
                and     edx, 7F8h
25281
                mov     ebx, [esi+ecx*8+4]
25282
                mov     ecx, [esp+68h]
25283
                mov     edi, [esi+edx+800h]
25284
                shr     ecx, 0Dh
25285
                mov     ebp, [esi+edx+804h]
25286
                and     ecx, 7F8h
25287
                mov     edx, [esp+60h]
25288
                xor     eax, edi
25289
                xor     ebx, ebp
25290
                shr     edx, 18h
25291
                mov     edi, [esi+ecx+1000h]
25292
                mov     ebp, [esi+ecx+1004h]
25293
                mov     ecx, [esp+5Ch]
25294
                xor     eax, edi
25295
                mov     edi, [esi+edx*8+1800h]
25296
                and     ecx, 0FFh
25297
                xor     ebx, ebp
25298
                mov     ebp, [esi+edx*8+1804h]
25299
                mov     edx, [esp+54h]
25300
                xor     eax, edi
25301
                xor     ebx, ebp
25302
                shr     edx, 5
25303
                mov     edi, [esi+ecx*8+2000h]
25304
                mov     ebp, [esi+ecx*8+2004h]
25305
                and     edx, 7F8h
25306
                mov     ecx, [esp+4Ch]
25307
                xor     eax, edi
25308
                shr     ecx, 0Dh
25309
                xor     ebx, ebp
25310
                mov     edi, [esi+edx+2800h]
25311
                and     ecx, 7F8h
25312
                mov     ebp, [esi+edx+2804h]
25313
                xor     eax, edi
25314
                mov     edx, [esp+44h]
25315
                xor     ebx, ebp
25316
                shr     edx, 18h
25317
                mov     edi, [esi+ecx+3000h]
25318
                mov     ebp, [esi+ecx+3004h]
25319
                xor     eax, edi
25320
                mov     edi, [esi+edx*8+3800h]
25321
                xor     ebx, ebp
25322
                mov     ebp, [esi+edx*8+3804h]
25323
                xor     eax, edi
25324
                xor     ebx, ebp
25325
                mov     [esp+0B8h], eax
25326
                mov     [esp+0BCh], ebx
25327
                mov     eax, [esp+80h]
25328
                mov     ebx, [esp+84h]
25329
                mov     ecx, [esp]
25330
                mov     edx, [esp+38h]
25331
                and     ecx, 0FFh
25332
                shr     edx, 5
25333
                mov     edi, [esi+ecx*8]
25334
                and     edx, 7F8h
25335
                mov     ebp, [esi+ecx*8+4]
25336
                xor     eax, edi
25337
                mov     ecx, [esp+30h]
25338
                mov     edi, [esi+edx+800h]
25339
                xor     ebx, ebp
25340
                shr     ecx, 0Dh
25341
                mov     ebp, [esi+edx+804h]
25342
                and     ecx, 7F8h
25343
                xor     eax, edi
25344
                mov     edx, [esp+28h]
25345
                xor     ebx, ebp
25346
                shr     edx, 18h
25347
                mov     edi, [esi+ecx+1000h]
25348
                mov     ebp, [esi+ecx+1004h]
25349
                xor     eax, edi
25350
                mov     edi, [esi+edx*8+1800h]
25351
                xor     ebx, ebp
25352
                mov     ebp, [esi+edx*8+1804h]
25353
                xor     eax, edi
25354
                xor     ebx, ebp
25355
                mov     ecx, [esp+24h]
25356
                mov     edx, [esp+1Ch]
25357
                and     ecx, 0FFh
25358
                shr     edx, 5
25359
                mov     edi, [esi+ecx*8+2000h]
25360
                and     edx, 7F8h
25361
                mov     ebp, [esi+ecx*8+2004h]
25362
                xor     eax, edi
25363
                mov     ecx, [esp+14h]
25364
                mov     edi, [esi+edx+2800h]
25365
                xor     ebx, ebp
25366
                shr     ecx, 0Dh
25367
                mov     ebp, [esi+edx+2804h]
25368
                and     ecx, 7F8h
25369
                xor     eax, edi
25370
                mov     edx, [esp+0Ch]
25371
                xor     ebx, ebp
25372
                shr     edx, 18h
25373
                mov     edi, [esi+ecx+3000h]
25374
                mov     ebp, [esi+ecx+3004h]
25375
                xor     eax, edi
25376
                mov     edi, [esi+edx*8+3800h]
25377
                xor     ebx, ebp
25378
                mov     ebp, [esi+edx*8+3804h]
25379
                xor     eax, edi
25380
                xor     ebx, ebp
25381
                mov     [esp+0C0h], eax
25382
                mov     [esp+0C4h], ebx
25383
                mov     eax, [esp+88h]
25384
                mov     ebx, [esp+8Ch]
25385
                mov     ecx, [esp+8]
25386
                mov     edx, [esp]
25387
                and     ecx, 0FFh
25388
                shr     edx, 5
25389
                mov     edi, [esi+ecx*8]
25390
                and     edx, 7F8h
25391
                mov     ebp, [esi+ecx*8+4]
25392
                xor     eax, edi
25393
                mov     ecx, [esp+38h]
25394
                mov     edi, [esi+edx+800h]
25395
                xor     ebx, ebp
25396
                shr     ecx, 0Dh
25397
                mov     ebp, [esi+edx+804h]
25398
                and     ecx, 7F8h
25399
                xor     eax, edi
25400
                mov     edx, [esp+30h]
25401
                xor     ebx, ebp
25402
                shr     edx, 18h
25403
                mov     edi, [esi+ecx+1000h]
25404
                mov     ebp, [esi+ecx+1004h]
25405
                xor     eax, edi
25406
                mov     edi, [esi+edx*8+1800h]
25407
                xor     ebx, ebp
25408
                mov     ebp, [esi+edx*8+1804h]
25409
                xor     eax, edi
25410
                xor     ebx, ebp
25411
                mov     ecx, [esp+2Ch]
25412
                mov     edx, [esp+24h]
25413
                and     ecx, 0FFh
25414
                shr     edx, 5
25415
                mov     edi, [esi+ecx*8+2000h]
25416
                and     edx, 7F8h
25417
                mov     ebp, [esi+ecx*8+2004h]
25418
                xor     eax, edi
25419
                mov     ecx, [esp+1Ch]
25420
                mov     edi, [esi+edx+2800h]
25421
                xor     ebx, ebp
25422
                shr     ecx, 0Dh
25423
                mov     ebp, [esi+edx+2804h]
25424
                and     ecx, 7F8h
25425
                xor     eax, edi
25426
                mov     edx, [esp+14h]
25427
                xor     ebx, ebp
25428
                shr     edx, 18h
25429
                mov     edi, [esi+ecx+3000h]
25430
                mov     ebp, [esi+ecx+3004h]
25431
                xor     eax, edi
25432
                mov     edi, [esi+edx*8+3800h]
25433
                xor     ebx, ebp
25434
                mov     ebp, [esi+edx*8+3804h]
25435
                xor     eax, edi
25436
                xor     ebx, ebp
25437
                mov     [esp+0C8h], eax
25438
                mov     [esp+0CCh], ebx
25439
                mov     eax, [esp+90h]
25440
                mov     ebx, [esp+94h]
25441
                mov     ecx, [esp+10h]
25442
                mov     edx, [esp+8]
25443
                and     ecx, 0FFh
25444
                shr     edx, 5
25445
                mov     edi, [esi+ecx*8]
25446
                and     edx, 7F8h
25447
                mov     ebp, [esi+ecx*8+4]
25448
                xor     eax, edi
25449
                mov     ecx, [esp]
25450
                mov     edi, [esi+edx+800h]
25451
                xor     ebx, ebp
25452
                shr     ecx, 0Dh
25453
                mov     ebp, [esi+edx+804h]
25454
                and     ecx, 7F8h
25455
                xor     eax, edi
25456
                mov     edx, [esp+38h]
25457
                xor     ebx, ebp
25458
                shr     edx, 18h
25459
                mov     edi, [esi+ecx+1000h]
25460
                mov     ebp, [esi+ecx+1004h]
25461
                xor     eax, edi
25462
                mov     edi, [esi+edx*8+1800h]
25463
                xor     ebx, ebp
25464
                mov     ebp, [esi+edx*8+1804h]
25465
                xor     eax, edi
25466
                xor     ebx, ebp
25467
                mov     ecx, [esp+34h]
25468
                mov     edx, [esp+2Ch]
25469
                and     ecx, 0FFh
25470
                shr     edx, 5
25471
                mov     edi, [esi+ecx*8+2000h]
25472
                and     edx, 7F8h
25473
                mov     ebp, [esi+ecx*8+2004h]
25474
                xor     eax, edi
25475
                mov     ecx, [esp+24h]
25476
                mov     edi, [esi+edx+2800h]
25477
                xor     ebx, ebp
25478
                shr     ecx, 0Dh
25479
                mov     ebp, [esi+edx+2804h]
25480
                and     ecx, 7F8h
25481
                xor     eax, edi
25482
                mov     edx, [esp+1Ch]
25483
                xor     ebx, ebp
25484
                shr     edx, 18h
25485
                mov     edi, [esi+ecx+3000h]
25486
                mov     ebp, [esi+ecx+3004h]
25487
                xor     eax, edi
25488
                mov     edi, [esi+edx*8+3800h]
25489
                xor     ebx, ebp
25490
                mov     ebp, [esi+edx*8+3804h]
25491
                xor     eax, edi
25492
                xor     ebx, ebp
25493
                mov     [esp+0D0h], eax
25494
                mov     [esp+0D4h], ebx
25495
                mov     eax, [esp+98h]
25496
                mov     ebx, [esp+9Ch]
25497
                mov     ecx, [esp+18h]
25498
                mov     edx, [esp+10h]
25499
                and     ecx, 0FFh
25500
                shr     edx, 5
25501
                mov     edi, [esi+ecx*8]
25502
                and     edx, 7F8h
25503
                mov     ebp, [esi+ecx*8+4]
25504
                xor     eax, edi
25505
                mov     ecx, [esp+8]
25506
                mov     edi, [esi+edx+800h]
25507
                xor     ebx, ebp
25508
                shr     ecx, 0Dh
25509
                mov     ebp, [esi+edx+804h]
25510
                and     ecx, 7F8h
25511
                xor     eax, edi
25512
                mov     edx, [esp]
25513
                xor     ebx, ebp
25514
                shr     edx, 18h
25515
                mov     edi, [esi+ecx+1000h]
25516
                mov     ebp, [esi+ecx+1004h]
25517
                xor     eax, edi
25518
                mov     edi, [esi+edx*8+1800h]
25519
                xor     ebx, ebp
25520
                mov     ebp, [esi+edx*8+1804h]
25521
                xor     eax, edi
25522
                xor     ebx, ebp
25523
                mov     ecx, [esp+3Ch]
25524
                mov     edx, [esp+34h]
25525
                and     ecx, 0FFh
25526
                shr     edx, 5
25527
                mov     edi, [esi+ecx*8+2000h]
25528
                and     edx, 7F8h
25529
                mov     ebp, [esi+ecx*8+2004h]
25530
                xor     eax, edi
25531
                mov     ecx, [esp+2Ch]
25532
                mov     edi, [esi+edx+2800h]
25533
                xor     ebx, ebp
25534
                shr     ecx, 0Dh
25535
                mov     ebp, [esi+edx+2804h]
25536
                and     ecx, 7F8h
25537
                xor     eax, edi
25538
                mov     edx, [esp+24h]
25539
                xor     ebx, ebp
25540
                shr     edx, 18h
25541
                mov     edi, [esi+ecx+3000h]
25542
                mov     ebp, [esi+ecx+3004h]
25543
                xor     eax, edi
25544
                mov     edi, [esi+edx*8+3800h]
25545
                xor     ebx, ebp
25546
                mov     ebp, [esi+edx*8+3804h]
25547
                xor     eax, edi
25548
                xor     ebx, ebp
25549
                mov     [esp+0D8h], eax
25550
                mov     [esp+0DCh], ebx
25551
                mov     eax, [esp+0A0h]
25552
                mov     ebx, [esp+0A4h]
25553
                mov     ecx, [esp+20h]
25554
                mov     edx, [esp+18h]
25555
                and     ecx, 0FFh
25556
                shr     edx, 5
25557
                mov     edi, [esi+ecx*8]
25558
                and     edx, 7F8h
25559
                mov     ebp, [esi+ecx*8+4]
25560
                xor     eax, edi
25561
                mov     ecx, [esp+10h]
25562
                mov     edi, [esi+edx+800h]
25563
                xor     ebx, ebp
25564
                shr     ecx, 0Dh
25565
                mov     ebp, [esi+edx+804h]
25566
                and     ecx, 7F8h
25567
                xor     eax, edi
25568
                mov     edx, [esp+8]
25569
                xor     ebx, ebp
25570
                shr     edx, 18h
25571
                mov     edi, [esi+ecx+1000h]
25572
                mov     ebp, [esi+ecx+1004h]
25573
                xor     eax, edi
25574
                mov     edi, [esi+edx*8+1800h]
25575
                xor     ebx, ebp
25576
                mov     ebp, [esi+edx*8+1804h]
25577
                xor     eax, edi
25578
                xor     ebx, ebp
25579
                mov     ecx, [esp+4]
25580
                mov     edx, [esp+3Ch]
25581
                and     ecx, 0FFh
25582
                shr     edx, 5
25583
                mov     edi, [esi+ecx*8+2000h]
25584
                and     edx, 7F8h
25585
                mov     ebp, [esi+ecx*8+2004h]
25586
                xor     eax, edi
25587
                mov     ecx, [esp+34h]
25588
                mov     edi, [esi+edx+2800h]
25589
                xor     ebx, ebp
25590
                shr     ecx, 0Dh
25591
                mov     ebp, [esi+edx+2804h]
25592
                and     ecx, 7F8h
25593
                xor     eax, edi
25594
                mov     edx, [esp+2Ch]
25595
                xor     ebx, ebp
25596
                shr     edx, 18h
25597
                mov     edi, [esi+ecx+3000h]
25598
                mov     ebp, [esi+ecx+3004h]
25599
                xor     eax, edi
25600
                mov     edi, [esi+edx*8+3800h]
25601
                xor     ebx, ebp
25602
                mov     ebp, [esi+edx*8+3804h]
25603
                xor     eax, edi
25604
                xor     ebx, ebp
25605
                mov     [esp+0E0h], eax
25606
                mov     [esp+0E4h], ebx
25607
                mov     eax, [esp+0A8h]
25608
                mov     ebx, [esp+0ACh]
25609
                mov     ecx, [esp+28h]
25610
                mov     edx, [esp+20h]
25611
                and     ecx, 0FFh
25612
                shr     edx, 5
25613
                mov     edi, [esi+ecx*8]
25614
                and     edx, 7F8h
25615
                mov     ebp, [esi+ecx*8+4]
25616
                xor     eax, edi
25617
                mov     ecx, [esp+18h]
25618
                mov     edi, [esi+edx+800h]
25619
                xor     ebx, ebp
25620
                shr     ecx, 0Dh
25621
                mov     ebp, [esi+edx+804h]
25622
                and     ecx, 7F8h
25623
                xor     eax, edi
25624
                mov     edx, [esp+10h]
25625
                xor     ebx, ebp
25626
                shr     edx, 18h
25627
                mov     edi, [esi+ecx+1000h]
25628
                mov     ebp, [esi+ecx+1004h]
25629
                xor     eax, edi
25630
                mov     edi, [esi+edx*8+1800h]
25631
                xor     ebx, ebp
25632
                mov     ebp, [esi+edx*8+1804h]
25633
                xor     eax, edi
25634
                xor     ebx, ebp
25635
                mov     ecx, [esp+0Ch]
25636
                mov     edx, [esp+4]
25637
                and     ecx, 0FFh
25638
                shr     edx, 5
25639
                mov     edi, [esi+ecx*8+2000h]
25640
                and     edx, 7F8h
25641
                mov     ebp, [esi+ecx*8+2004h]
25642
                xor     eax, edi
25643
                mov     ecx, [esp+3Ch]
25644
                mov     edi, [esi+edx+2800h]
25645
                xor     ebx, ebp
25646
                shr     ecx, 0Dh
25647
                mov     ebp, [esi+edx+2804h]
25648
                and     ecx, 7F8h
25649
                xor     eax, edi
25650
                mov     edx, [esp+34h]
25651
                xor     ebx, ebp
25652
                shr     edx, 18h
25653
                mov     edi, [esi+ecx+3000h]
25654
                mov     ebp, [esi+ecx+3004h]
25655
                xor     eax, edi
25656
                mov     edi, [esi+edx*8+3800h]
25657
                xor     ebx, ebp
25658
                mov     ebp, [esi+edx*8+3804h]
25659
                xor     eax, edi
25660
                xor     ebx, ebp
25661
                mov     [esp+0E8h], eax
25662
                mov     [esp+0ECh], ebx
25663
                mov     eax, [esp+0B0h]
25664
                mov     ebx, [esp+0B4h]
25665
                mov     ecx, [esp+30h]
25666
                mov     edx, [esp+28h]
25667
                and     ecx, 0FFh
25668
                shr     edx, 5
25669
                mov     edi, [esi+ecx*8]
25670
                and     edx, 7F8h
25671
                mov     ebp, [esi+ecx*8+4]
25672
                xor     eax, edi
25673
                mov     ecx, [esp+20h]
25674
                mov     edi, [esi+edx+800h]
25675
                xor     ebx, ebp
25676
                shr     ecx, 0Dh
25677
                mov     ebp, [esi+edx+804h]
25678
                and     ecx, 7F8h
25679
                xor     eax, edi
25680
                mov     edx, [esp+18h]
25681
                xor     ebx, ebp
25682
                shr     edx, 18h
25683
                mov     edi, [esi+ecx+1000h]
25684
                mov     ebp, [esi+ecx+1004h]
25685
                xor     eax, edi
25686
                mov     edi, [esi+edx*8+1800h]
25687
                xor     ebx, ebp
25688
                mov     ebp, [esi+edx*8+1804h]
25689
                xor     eax, edi
25690
                xor     ebx, ebp
25691
                mov     ecx, [esp+14h]
25692
                mov     edx, [esp+0Ch]
25693
                and     ecx, 0FFh
25694
                shr     edx, 5
25695
                mov     edi, [esi+ecx*8+2000h]
25696
                and     edx, 7F8h
25697
                mov     ebp, [esi+ecx*8+2004h]
25698
                xor     eax, edi
25699
                mov     ecx, [esp+4]
25700
                mov     edi, [esi+edx+2800h]
25701
                xor     ebx, ebp
25702
                shr     ecx, 0Dh
25703
                mov     ebp, [esi+edx+2804h]
25704
                and     ecx, 7F8h
25705
                xor     eax, edi
25706
                mov     edx, [esp+3Ch]
25707
                xor     ebx, ebp
25708
                shr     edx, 18h
25709
                mov     edi, [esi+ecx+3000h]
25710
                mov     ebp, [esi+ecx+3004h]
25711
                xor     eax, edi
25712
                mov     edi, [esi+edx*8+3800h]
25713
                xor     ebx, ebp
25714
                mov     ebp, [esi+edx*8+3804h]
25715
                xor     eax, edi
25716
                xor     ebx, ebp
25717
                mov     [esp+0F0h], eax
25718
                mov     [esp+0F4h], ebx
25719
                mov     eax, [esp+0B8h]
25720
                mov     ebx, [esp+0BCh]
25721
                mov     ecx, [esp+38h]
25722
                mov     edx, [esp+30h]
25723
                and     ecx, 0FFh
25724
                shr     edx, 5
25725
                mov     edi, [esi+ecx*8]
25726
                and     edx, 7F8h
25727
                mov     ebp, [esi+ecx*8+4]
25728
                xor     eax, edi
25729
                mov     ecx, [esp+28h]
25730
                mov     edi, [esi+edx+800h]
25731
                xor     ebx, ebp
25732
                shr     ecx, 0Dh
25733
                mov     ebp, [esi+edx+804h]
25734
                and     ecx, 7F8h
25735
                xor     eax, edi
25736
                mov     edx, [esp+20h]
25737
                xor     ebx, ebp
25738
                shr     edx, 18h
25739
                mov     edi, [esi+ecx+1000h]
25740
                mov     ebp, [esi+ecx+1004h]
25741
                xor     eax, edi
25742
                mov     edi, [esi+edx*8+1800h]
25743
                xor     ebx, ebp
25744
                mov     ebp, [esi+edx*8+1804h]
25745
                xor     eax, edi
25746
                xor     ebx, ebp
25747
                mov     ecx, [esp+1Ch]
25748
                mov     edx, [esp+14h]
25749
                and     ecx, 0FFh
25750
                shr     edx, 5
25751
                mov     edi, [esi+ecx*8+2000h]
25752
                and     edx, 7F8h
25753
                mov     ebp, [esi+ecx*8+2004h]
25754
                xor     eax, edi
25755
                mov     ecx, [esp+0Ch]
25756
                mov     edi, [esi+edx+2800h]
25757
                xor     ebx, ebp
25758
                shr     ecx, 0Dh
25759
                mov     ebp, [esi+edx+2804h]
25760
                and     ecx, 7F8h
25761
                xor     eax, edi
25762
                mov     edx, [esp+4]
25763
                xor     ebx, ebp
25764
                shr     edx, 18h
25765
                mov     edi, [esi+ecx+3000h]
25766
                mov     ebp, [esi+ecx+3004h]
25767
                xor     eax, edi
25768
                mov     edi, [esi+edx*8+3800h]
25769
                xor     ebx, ebp
25770
                mov     ebp, [esi+edx*8+3804h]
25771
                xor     eax, edi
25772
                xor     ebx, ebp
25773
                mov     [esp+0F8h], eax
25774
                mov     [esp+0FCh], ebx
25775
                mov     ebp, [esp+108h]
25776
                mov     edi, [esp+100h]
25777
                mov     eax, [edi+ebp+8]
25778
                mov     ebx, [edi+ebp+0Ch]
25779
                mov     ecx, [esp+80h]
25780
                mov     edx, [esp+0B8h]
25781
                and     ecx, 0FFh
25782
                shr     edx, 5
25783
                mov     edi, [esi+ecx*8]
25784
                and     edx, 7F8h
25785
                mov     ebp, [esi+ecx*8+4]
25786
                xor     eax, edi
25787
                mov     ecx, [esp+0B0h]
25788
                mov     edi, [esi+edx+800h]
25789
                xor     ebx, ebp
25790
                shr     ecx, 0Dh
25791
                mov     ebp, [esi+edx+804h]
25792
                and     ecx, 7F8h
25793
                xor     eax, edi
25794
                mov     edx, [esp+0A8h]
25795
                xor     ebx, ebp
25796
                shr     edx, 18h
25797
                mov     edi, [esi+ecx+1000h]
25798
                mov     ebp, [esi+ecx+1004h]
25799
                xor     eax, edi
25800
                mov     edi, [esi+edx*8+1800h]
25801
                xor     ebx, ebp
25802
                mov     ebp, [esi+edx*8+1804h]
25803
                xor     eax, edi
25804
                xor     ebx, ebp
25805
                mov     ecx, [esp+0A4h]
25806
                mov     edx, [esp+9Ch]
25807
                and     ecx, 0FFh
25808
                shr     edx, 5
25809
                mov     edi, [esi+ecx*8+2000h]
25810
                and     edx, 7F8h
25811
                mov     ebp, [esi+ecx*8+2004h]
25812
                xor     eax, edi
25813
                mov     ecx, [esp+94h]
25814
                mov     edi, [esi+edx+2800h]
25815
                xor     ebx, ebp
25816
                shr     ecx, 0Dh
25817
                mov     ebp, [esi+edx+2804h]
25818
                and     ecx, 7F8h
25819
                xor     eax, edi
25820
                mov     edx, [esp+8Ch]
25821
                xor     ebx, ebp
25822
                shr     edx, 18h
25823
                mov     edi, [esi+ecx+3000h]
25824
                mov     ebp, [esi+ecx+3004h]
25825
                xor     eax, edi
25826
                mov     edi, [esi+edx*8+3800h]
25827
                xor     ebx, ebp
25828
                mov     ebp, [esi+edx*8+3804h]
25829
                xor     eax, edi
25830
                xor     ebx, ebp
25831
                mov     [esp+40h], eax
25832
                mov     [esp+44h], ebx
25833
                mov     ecx, [esp+88h]
25834
                mov     edx, [esp+80h]
25835
                and     ecx, 0FFh
25836
                shr     edx, 5
25837
                mov     eax, [esi+ecx*8]
25838
                and     edx, 7F8h
25839
                mov     ebx, [esi+ecx*8+4]
25840
                mov     ecx, [esp+0B8h]
25841
                mov     edi, [esi+edx+800h]
25842
                shr     ecx, 0Dh
25843
                mov     ebp, [esi+edx+804h]
25844
                and     ecx, 7F8h
25845
                mov     edx, [esp+0B0h]
25846
                xor     eax, edi
25847
                xor     ebx, ebp
25848
                shr     edx, 18h
25849
                mov     edi, [esi+ecx+1000h]
25850
                mov     ebp, [esi+ecx+1004h]
25851
                mov     ecx, [esp+0ACh]
25852
                xor     eax, edi
25853
                mov     edi, [esi+edx*8+1800h]
25854
                and     ecx, 0FFh
25855
                xor     ebx, ebp
25856
                mov     ebp, [esi+edx*8+1804h]
25857
                mov     edx, [esp+0A4h]
25858
                xor     eax, edi
25859
                xor     ebx, ebp
25860
                shr     edx, 5
25861
                mov     edi, [esi+ecx*8+2000h]
25862
                mov     ebp, [esi+ecx*8+2004h]
25863
                and     edx, 7F8h
25864
                mov     ecx, [esp+9Ch]
25865
                xor     eax, edi
25866
                shr     ecx, 0Dh
25867
                xor     ebx, ebp
25868
                mov     edi, [esi+edx+2800h]
25869
                and     ecx, 7F8h
25870
                mov     ebp, [esi+edx+2804h]
25871
                xor     eax, edi
25872
                mov     edx, [esp+94h]
25873
                xor     ebx, ebp
25874
                shr     edx, 18h
25875
                mov     edi, [esi+ecx+3000h]
25876
                mov     ebp, [esi+ecx+3004h]
25877
                xor     eax, edi
25878
                mov     edi, [esi+edx*8+3800h]
25879
                xor     ebx, ebp
25880
                mov     ebp, [esi+edx*8+3804h]
25881
                xor     eax, edi
25882
                xor     ebx, ebp
25883
                mov     [esp+48h], eax
25884
                mov     [esp+4Ch], ebx
25885
                mov     ecx, [esp+90h]
25886
                mov     edx, [esp+88h]
25887
                and     ecx, 0FFh
25888
                shr     edx, 5
25889
                mov     eax, [esi+ecx*8]
25890
                and     edx, 7F8h
25891
                mov     ebx, [esi+ecx*8+4]
25892
                mov     ecx, [esp+80h]
25893
                mov     edi, [esi+edx+800h]
25894
                shr     ecx, 0Dh
25895
                mov     ebp, [esi+edx+804h]
25896
                and     ecx, 7F8h
25897
                mov     edx, [esp+0B8h]
25898
                xor     eax, edi
25899
                xor     ebx, ebp
25900
                shr     edx, 18h
25901
                mov     edi, [esi+ecx+1000h]
25902
                mov     ebp, [esi+ecx+1004h]
25903
                mov     ecx, [esp+0B4h]
25904
                xor     eax, edi
25905
                mov     edi, [esi+edx*8+1800h]
25906
                and     ecx, 0FFh
25907
                xor     ebx, ebp
25908
                mov     ebp, [esi+edx*8+1804h]
25909
                mov     edx, [esp+0ACh]
25910
                xor     eax, edi
25911
                xor     ebx, ebp
25912
                shr     edx, 5
25913
                mov     edi, [esi+ecx*8+2000h]
25914
                mov     ebp, [esi+ecx*8+2004h]
25915
                and     edx, 7F8h
25916
                mov     ecx, [esp+0A4h]
25917
                xor     eax, edi
25918
                shr     ecx, 0Dh
25919
                xor     ebx, ebp
25920
                mov     edi, [esi+edx+2800h]
25921
                and     ecx, 7F8h
25922
                mov     ebp, [esi+edx+2804h]
25923
                xor     eax, edi
25924
                mov     edx, [esp+9Ch]
25925
                xor     ebx, ebp
25926
                shr     edx, 18h
25927
                mov     edi, [esi+ecx+3000h]
25928
                mov     ebp, [esi+ecx+3004h]
25929
                xor     eax, edi
25930
                mov     edi, [esi+edx*8+3800h]
25931
                xor     ebx, ebp
25932
                mov     ebp, [esi+edx*8+3804h]
25933
                xor     eax, edi
25934
                xor     ebx, ebp
25935
                mov     [esp+50h], eax
25936
                mov     [esp+54h], ebx
25937
                mov     ecx, [esp+98h]
25938
                mov     edx, [esp+90h]
25939
                and     ecx, 0FFh
25940
                shr     edx, 5
25941
                mov     eax, [esi+ecx*8]
25942
                and     edx, 7F8h
25943
                mov     ebx, [esi+ecx*8+4]
25944
                mov     ecx, [esp+88h]
25945
                mov     edi, [esi+edx+800h]
25946
                shr     ecx, 0Dh
25947
                mov     ebp, [esi+edx+804h]
25948
                and     ecx, 7F8h
25949
                mov     edx, [esp+80h]
25950
                xor     eax, edi
25951
                xor     ebx, ebp
25952
                shr     edx, 18h
25953
                mov     edi, [esi+ecx+1000h]
25954
                mov     ebp, [esi+ecx+1004h]
25955
                mov     ecx, [esp+0BCh]
25956
                xor     eax, edi
25957
                mov     edi, [esi+edx*8+1800h]
25958
                and     ecx, 0FFh
25959
                xor     ebx, ebp
25960
                mov     ebp, [esi+edx*8+1804h]
25961
                mov     edx, [esp+0B4h]
25962
                xor     eax, edi
25963
                xor     ebx, ebp
25964
                shr     edx, 5
25965
                mov     edi, [esi+ecx*8+2000h]
25966
                mov     ebp, [esi+ecx*8+2004h]
25967
                and     edx, 7F8h
25968
                mov     ecx, [esp+0ACh]
25969
                xor     eax, edi
25970
                shr     ecx, 0Dh
25971
                xor     ebx, ebp
25972
                mov     edi, [esi+edx+2800h]
25973
                and     ecx, 7F8h
25974
                mov     ebp, [esi+edx+2804h]
25975
                xor     eax, edi
25976
                mov     edx, [esp+0A4h]
25977
                xor     ebx, ebp
25978
                shr     edx, 18h
25979
                mov     edi, [esi+ecx+3000h]
25980
                mov     ebp, [esi+ecx+3004h]
25981
                xor     eax, edi
25982
                mov     edi, [esi+edx*8+3800h]
25983
                xor     ebx, ebp
25984
                mov     ebp, [esi+edx*8+3804h]
25985
                xor     eax, edi
25986
                xor     ebx, ebp
25987
                mov     [esp+58h], eax
25988
                mov     [esp+5Ch], ebx
25989
                mov     ecx, [esp+0A0h]
25990
                mov     edx, [esp+98h]
25991
                and     ecx, 0FFh
25992
                shr     edx, 5
25993
                mov     eax, [esi+ecx*8]
25994
                and     edx, 7F8h
25995
                mov     ebx, [esi+ecx*8+4]
25996
                mov     ecx, [esp+90h]
25997
                mov     edi, [esi+edx+800h]
25998
                shr     ecx, 0Dh
25999
                mov     ebp, [esi+edx+804h]
26000
                and     ecx, 7F8h
26001
                mov     edx, [esp+88h]
26002
                xor     eax, edi
26003
                xor     ebx, ebp
26004
                shr     edx, 18h
26005
                mov     edi, [esi+ecx+1000h]
26006
                mov     ebp, [esi+ecx+1004h]
26007
                mov     ecx, [esp+84h]
26008
                xor     eax, edi
26009
                mov     edi, [esi+edx*8+1800h]
26010
                and     ecx, 0FFh
26011
                xor     ebx, ebp
26012
                mov     ebp, [esi+edx*8+1804h]
26013
                mov     edx, [esp+0BCh]
26014
                xor     eax, edi
26015
                xor     ebx, ebp
26016
                shr     edx, 5
26017
                mov     edi, [esi+ecx*8+2000h]
26018
                mov     ebp, [esi+ecx*8+2004h]
26019
                and     edx, 7F8h
26020
                mov     ecx, [esp+0B4h]
26021
                xor     eax, edi
26022
                shr     ecx, 0Dh
26023
                xor     ebx, ebp
26024
                mov     edi, [esi+edx+2800h]
26025
                and     ecx, 7F8h
26026
                mov     ebp, [esi+edx+2804h]
26027
                xor     eax, edi
26028
                mov     edx, [esp+0ACh]
26029
                xor     ebx, ebp
26030
                shr     edx, 18h
26031
                mov     edi, [esi+ecx+3000h]
26032
                mov     ebp, [esi+ecx+3004h]
26033
                xor     eax, edi
26034
                mov     edi, [esi+edx*8+3800h]
26035
                xor     ebx, ebp
26036
                mov     ebp, [esi+edx*8+3804h]
26037
                xor     eax, edi
26038
                xor     ebx, ebp
26039
                mov     [esp+60h], eax
26040
                mov     [esp+64h], ebx
26041
                mov     ecx, [esp+0A8h]
26042
                mov     edx, [esp+0A0h]
26043
                and     ecx, 0FFh
26044
                shr     edx, 5
26045
                mov     eax, [esi+ecx*8]
26046
                and     edx, 7F8h
26047
                mov     ebx, [esi+ecx*8+4]
26048
                mov     ecx, [esp+98h]
26049
                mov     edi, [esi+edx+800h]
26050
                shr     ecx, 0Dh
26051
                mov     ebp, [esi+edx+804h]
26052
                and     ecx, 7F8h
26053
                mov     edx, [esp+90h]
26054
                xor     eax, edi
26055
                xor     ebx, ebp
26056
                shr     edx, 18h
26057
                mov     edi, [esi+ecx+1000h]
26058
                mov     ebp, [esi+ecx+1004h]
26059
                mov     ecx, [esp+8Ch]
26060
                xor     eax, edi
26061
                mov     edi, [esi+edx*8+1800h]
26062
                and     ecx, 0FFh
26063
                xor     ebx, ebp
26064
                mov     ebp, [esi+edx*8+1804h]
26065
                mov     edx, [esp+84h]
26066
                xor     eax, edi
26067
                xor     ebx, ebp
26068
                shr     edx, 5
26069
                mov     edi, [esi+ecx*8+2000h]
26070
                mov     ebp, [esi+ecx*8+2004h]
26071
                and     edx, 7F8h
26072
                mov     ecx, [esp+0BCh]
26073
                xor     eax, edi
26074
                shr     ecx, 0Dh
26075
                xor     ebx, ebp
26076
                mov     edi, [esi+edx+2800h]
26077
                and     ecx, 7F8h
26078
                mov     ebp, [esi+edx+2804h]
26079
                xor     eax, edi
26080
                mov     edx, [esp+0B4h]
26081
                xor     ebx, ebp
26082
                shr     edx, 18h
26083
                mov     edi, [esi+ecx+3000h]
26084
                mov     ebp, [esi+ecx+3004h]
26085
                xor     eax, edi
26086
                mov     edi, [esi+edx*8+3800h]
26087
                xor     ebx, ebp
26088
                mov     ebp, [esi+edx*8+3804h]
26089
                xor     eax, edi
26090
                xor     ebx, ebp
26091
                mov     [esp+68h], eax
26092
                mov     [esp+6Ch], ebx
26093
                mov     ecx, [esp+0B0h]
26094
                mov     edx, [esp+0A8h]
26095
                and     ecx, 0FFh
26096
                shr     edx, 5
26097
                mov     eax, [esi+ecx*8]
26098
                and     edx, 7F8h
26099
                mov     ebx, [esi+ecx*8+4]
26100
                mov     ecx, [esp+0A0h]
26101
                mov     edi, [esi+edx+800h]
26102
                shr     ecx, 0Dh
26103
                mov     ebp, [esi+edx+804h]
26104
                and     ecx, 7F8h
26105
                mov     edx, [esp+98h]
26106
                xor     eax, edi
26107
                xor     ebx, ebp
26108
                shr     edx, 18h
26109
                mov     edi, [esi+ecx+1000h]
26110
                mov     ebp, [esi+ecx+1004h]
26111
                mov     ecx, [esp+94h]
26112
                xor     eax, edi
26113
                mov     edi, [esi+edx*8+1800h]
26114
                and     ecx, 0FFh
26115
                xor     ebx, ebp
26116
                mov     ebp, [esi+edx*8+1804h]
26117
                mov     edx, [esp+8Ch]
26118
                xor     eax, edi
26119
                xor     ebx, ebp
26120
                shr     edx, 5
26121
                mov     edi, [esi+ecx*8+2000h]
26122
                mov     ebp, [esi+ecx*8+2004h]
26123
                and     edx, 7F8h
26124
                mov     ecx, [esp+84h]
26125
                xor     eax, edi
26126
                shr     ecx, 0Dh
26127
                xor     ebx, ebp
26128
                mov     edi, [esi+edx+2800h]
26129
                and     ecx, 7F8h
26130
                mov     ebp, [esi+edx+2804h]
26131
                xor     eax, edi
26132
                mov     edx, [esp+0BCh]
26133
                xor     ebx, ebp
26134
                shr     edx, 18h
26135
                mov     edi, [esi+ecx+3000h]
26136
                mov     ebp, [esi+ecx+3004h]
26137
                xor     eax, edi
26138
                mov     edi, [esi+edx*8+3800h]
26139
                xor     ebx, ebp
26140
                mov     ebp, [esi+edx*8+3804h]
26141
                xor     eax, edi
26142
                xor     ebx, ebp
26143
                mov     [esp+70h], eax
26144
                mov     [esp+74h], ebx
26145
                mov     ecx, [esp+0B8h]
26146
                mov     edx, [esp+0B0h]
26147
                and     ecx, 0FFh
26148
                shr     edx, 5
26149
                mov     eax, [esi+ecx*8]
26150
                and     edx, 7F8h
26151
                mov     ebx, [esi+ecx*8+4]
26152
                mov     ecx, [esp+0A8h]
26153
                mov     edi, [esi+edx+800h]
26154
                shr     ecx, 0Dh
26155
                mov     ebp, [esi+edx+804h]
26156
                and     ecx, 7F8h
26157
                mov     edx, [esp+0A0h]
26158
                xor     eax, edi
26159
                xor     ebx, ebp
26160
                shr     edx, 18h
26161
                mov     edi, [esi+ecx+1000h]
26162
                mov     ebp, [esi+ecx+1004h]
26163
                mov     ecx, [esp+9Ch]
26164
                xor     eax, edi
26165
                mov     edi, [esi+edx*8+1800h]
26166
                and     ecx, 0FFh
26167
                xor     ebx, ebp
26168
                mov     ebp, [esi+edx*8+1804h]
26169
                mov     edx, [esp+94h]
26170
                xor     eax, edi
26171
                xor     ebx, ebp
26172
                shr     edx, 5
26173
                mov     edi, [esi+ecx*8+2000h]
26174
                mov     ebp, [esi+ecx*8+2004h]
26175
                and     edx, 7F8h
26176
                mov     ecx, [esp+8Ch]
26177
                xor     eax, edi
26178
                shr     ecx, 0Dh
26179
                xor     ebx, ebp
26180
                mov     edi, [esi+edx+2800h]
26181
                and     ecx, 7F8h
26182
                mov     ebp, [esi+edx+2804h]
26183
                xor     eax, edi
26184
                mov     edx, [esp+84h]
26185
                xor     ebx, ebp
26186
                shr     edx, 18h
26187
                mov     edi, [esi+ecx+3000h]
26188
                mov     ebp, [esi+ecx+3004h]
26189
                xor     eax, edi
26190
                mov     edi, [esi+edx*8+3800h]
26191
                xor     ebx, ebp
26192
                mov     ebp, [esi+edx*8+3804h]
26193
                xor     eax, edi
26194
                xor     ebx, ebp
26195
                mov     [esp+78h], eax
26196
                mov     [esp+7Ch], ebx
26197
                mov     eax, [esp+40h]
26198
                mov     ebx, [esp+44h]
26199
                mov     ecx, [esp+0C0h]
26200
                mov     edx, [esp+0F8h]
26201
                and     ecx, 0FFh
26202
                shr     edx, 5
26203
                mov     edi, [esi+ecx*8]
26204
                and     edx, 7F8h
26205
                mov     ebp, [esi+ecx*8+4]
26206
                xor     eax, edi
26207
                mov     ecx, [esp+0F0h]
26208
                mov     edi, [esi+edx+800h]
26209
                xor     ebx, ebp
26210
                shr     ecx, 0Dh
26211
                mov     ebp, [esi+edx+804h]
26212
                and     ecx, 7F8h
26213
                xor     eax, edi
26214
                mov     edx, [esp+0E8h]
26215
                xor     ebx, ebp
26216
                shr     edx, 18h
26217
                mov     edi, [esi+ecx+1000h]
26218
                mov     ebp, [esi+ecx+1004h]
26219
                xor     eax, edi
26220
                mov     edi, [esi+edx*8+1800h]
26221
                xor     ebx, ebp
26222
                mov     ebp, [esi+edx*8+1804h]
26223
                xor     eax, edi
26224
                xor     ebx, ebp
26225
                mov     ecx, [esp+0E4h]
26226
                mov     edx, [esp+0DCh]
26227
                and     ecx, 0FFh
26228
                shr     edx, 5
26229
                mov     edi, [esi+ecx*8+2000h]
26230
                and     edx, 7F8h
26231
                mov     ebp, [esi+ecx*8+2004h]
26232
                xor     eax, edi
26233
                mov     ecx, [esp+0D4h]
26234
                mov     edi, [esi+edx+2800h]
26235
                xor     ebx, ebp
26236
                shr     ecx, 0Dh
26237
                mov     ebp, [esi+edx+2804h]
26238
                and     ecx, 7F8h
26239
                xor     eax, edi
26240
                mov     edx, [esp+0CCh]
26241
                xor     ebx, ebp
26242
                shr     edx, 18h
26243
                mov     edi, [esi+ecx+3000h]
26244
                mov     ebp, [esi+ecx+3004h]
26245
                xor     eax, edi
26246
                mov     edi, [esi+edx*8+3800h]
26247
                xor     ebx, ebp
26248
                mov     ebp, [esi+edx*8+3804h]
26249
                xor     eax, edi
26250
                xor     ebx, ebp
26251
                mov     [esp], eax
26252
                mov     [esp+4], ebx
26253
                mov     eax, [esp+48h]
26254
                mov     ebx, [esp+4Ch]
26255
                mov     ecx, [esp+0C8h]
26256
                mov     edx, [esp+0C0h]
26257
                and     ecx, 0FFh
26258
                shr     edx, 5
26259
                mov     edi, [esi+ecx*8]
26260
                and     edx, 7F8h
26261
                mov     ebp, [esi+ecx*8+4]
26262
                xor     eax, edi
26263
                mov     ecx, [esp+0F8h]
26264
                mov     edi, [esi+edx+800h]
26265
                xor     ebx, ebp
26266
                shr     ecx, 0Dh
26267
                mov     ebp, [esi+edx+804h]
26268
                and     ecx, 7F8h
26269
                xor     eax, edi
26270
                mov     edx, [esp+0F0h]
26271
                xor     ebx, ebp
26272
                shr     edx, 18h
26273
                mov     edi, [esi+ecx+1000h]
26274
                mov     ebp, [esi+ecx+1004h]
26275
                xor     eax, edi
26276
                mov     edi, [esi+edx*8+1800h]
26277
                xor     ebx, ebp
26278
                mov     ebp, [esi+edx*8+1804h]
26279
                xor     eax, edi
26280
                xor     ebx, ebp
26281
                mov     ecx, [esp+0ECh]
26282
                mov     edx, [esp+0E4h]
26283
                and     ecx, 0FFh
26284
                shr     edx, 5
26285
                mov     edi, [esi+ecx*8+2000h]
26286
                and     edx, 7F8h
26287
                mov     ebp, [esi+ecx*8+2004h]
26288
                xor     eax, edi
26289
                mov     ecx, [esp+0DCh]
26290
                mov     edi, [esi+edx+2800h]
26291
                xor     ebx, ebp
26292
                shr     ecx, 0Dh
26293
                mov     ebp, [esi+edx+2804h]
26294
                and     ecx, 7F8h
26295
                xor     eax, edi
26296
                mov     edx, [esp+0D4h]
26297
                xor     ebx, ebp
26298
                shr     edx, 18h
26299
                mov     edi, [esi+ecx+3000h]
26300
                mov     ebp, [esi+ecx+3004h]
26301
                xor     eax, edi
26302
                mov     edi, [esi+edx*8+3800h]
26303
                xor     ebx, ebp
26304
                mov     ebp, [esi+edx*8+3804h]
26305
                xor     eax, edi
26306
                xor     ebx, ebp
26307
                mov     [esp+8], eax
26308
                mov     [esp+0Ch], ebx
26309
                mov     eax, [esp+50h]
26310
                mov     ebx, [esp+54h]
26311
                mov     ecx, [esp+0D0h]
26312
                mov     edx, [esp+0C8h]
26313
                and     ecx, 0FFh
26314
                shr     edx, 5
26315
                mov     edi, [esi+ecx*8]
26316
                and     edx, 7F8h
26317
                mov     ebp, [esi+ecx*8+4]
26318
                xor     eax, edi
26319
                mov     ecx, [esp+0C0h]
26320
                mov     edi, [esi+edx+800h]
26321
                xor     ebx, ebp
26322
                shr     ecx, 0Dh
26323
                mov     ebp, [esi+edx+804h]
26324
                and     ecx, 7F8h
26325
                xor     eax, edi
26326
                mov     edx, [esp+0F8h]
26327
                xor     ebx, ebp
26328
                shr     edx, 18h
26329
                mov     edi, [esi+ecx+1000h]
26330
                mov     ebp, [esi+ecx+1004h]
26331
                xor     eax, edi
26332
                mov     edi, [esi+edx*8+1800h]
26333
                xor     ebx, ebp
26334
                mov     ebp, [esi+edx*8+1804h]
26335
                xor     eax, edi
26336
                xor     ebx, ebp
26337
                mov     ecx, [esp+0F4h]
26338
                mov     edx, [esp+0ECh]
26339
                and     ecx, 0FFh
26340
                shr     edx, 5
26341
                mov     edi, [esi+ecx*8+2000h]
26342
                and     edx, 7F8h
26343
                mov     ebp, [esi+ecx*8+2004h]
26344
                xor     eax, edi
26345
                mov     ecx, [esp+0E4h]
26346
                mov     edi, [esi+edx+2800h]
26347
                xor     ebx, ebp
26348
                shr     ecx, 0Dh
26349
                mov     ebp, [esi+edx+2804h]
26350
                and     ecx, 7F8h
26351
                xor     eax, edi
26352
                mov     edx, [esp+0DCh]
26353
                xor     ebx, ebp
26354
                shr     edx, 18h
26355
                mov     edi, [esi+ecx+3000h]
26356
                mov     ebp, [esi+ecx+3004h]
26357
                xor     eax, edi
26358
                mov     edi, [esi+edx*8+3800h]
26359
                xor     ebx, ebp
26360
                mov     ebp, [esi+edx*8+3804h]
26361
                xor     eax, edi
26362
                xor     ebx, ebp
26363
                mov     [esp+10h], eax
26364
                mov     [esp+14h], ebx
26365
                mov     eax, [esp+58h]
26366
                mov     ebx, [esp+5Ch]
26367
                mov     ecx, [esp+0D8h]
26368
                mov     edx, [esp+0D0h]
26369
                and     ecx, 0FFh
26370
                shr     edx, 5
26371
                mov     edi, [esi+ecx*8]
26372
                and     edx, 7F8h
26373
                mov     ebp, [esi+ecx*8+4]
26374
                xor     eax, edi
26375
                mov     ecx, [esp+0C8h]
26376
                mov     edi, [esi+edx+800h]
26377
                xor     ebx, ebp
26378
                shr     ecx, 0Dh
26379
                mov     ebp, [esi+edx+804h]
26380
                and     ecx, 7F8h
26381
                xor     eax, edi
26382
                mov     edx, [esp+0C0h]
26383
                xor     ebx, ebp
26384
                shr     edx, 18h
26385
                mov     edi, [esi+ecx+1000h]
26386
                mov     ebp, [esi+ecx+1004h]
26387
                xor     eax, edi
26388
                mov     edi, [esi+edx*8+1800h]
26389
                xor     ebx, ebp
26390
                mov     ebp, [esi+edx*8+1804h]
26391
                xor     eax, edi
26392
                xor     ebx, ebp
26393
                mov     ecx, [esp+0FCh]
26394
                mov     edx, [esp+0F4h]
26395
                and     ecx, 0FFh
26396
                shr     edx, 5
26397
                mov     edi, [esi+ecx*8+2000h]
26398
                and     edx, 7F8h
26399
                mov     ebp, [esi+ecx*8+2004h]
26400
                xor     eax, edi
26401
                mov     ecx, [esp+0ECh]
26402
                mov     edi, [esi+edx+2800h]
26403
                xor     ebx, ebp
26404
                shr     ecx, 0Dh
26405
                mov     ebp, [esi+edx+2804h]
26406
                and     ecx, 7F8h
26407
                xor     eax, edi
26408
                mov     edx, [esp+0E4h]
26409
                xor     ebx, ebp
26410
                shr     edx, 18h
26411
                mov     edi, [esi+ecx+3000h]
26412
                mov     ebp, [esi+ecx+3004h]
26413
                xor     eax, edi
26414
                mov     edi, [esi+edx*8+3800h]
26415
                xor     ebx, ebp
26416
                mov     ebp, [esi+edx*8+3804h]
26417
                xor     eax, edi
26418
                xor     ebx, ebp
26419
                mov     [esp+18h], eax
26420
                mov     [esp+1Ch], ebx
26421
                mov     eax, [esp+60h]
26422
                mov     ebx, [esp+64h]
26423
                mov     ecx, [esp+0E0h]
26424
                mov     edx, [esp+0D8h]
26425
                and     ecx, 0FFh
26426
                shr     edx, 5
26427
                mov     edi, [esi+ecx*8]
26428
                and     edx, 7F8h
26429
                mov     ebp, [esi+ecx*8+4]
26430
                xor     eax, edi
26431
                mov     ecx, [esp+0D0h]
26432
                mov     edi, [esi+edx+800h]
26433
                xor     ebx, ebp
26434
                shr     ecx, 0Dh
26435
                mov     ebp, [esi+edx+804h]
26436
                and     ecx, 7F8h
26437
                xor     eax, edi
26438
                mov     edx, [esp+0C8h]
26439
                xor     ebx, ebp
26440
                shr     edx, 18h
26441
                mov     edi, [esi+ecx+1000h]
26442
                mov     ebp, [esi+ecx+1004h]
26443
                xor     eax, edi
26444
                mov     edi, [esi+edx*8+1800h]
26445
                xor     ebx, ebp
26446
                mov     ebp, [esi+edx*8+1804h]
26447
                xor     eax, edi
26448
                xor     ebx, ebp
26449
                mov     ecx, [esp+0C4h]
26450
                mov     edx, [esp+0FCh]
26451
                and     ecx, 0FFh
26452
                shr     edx, 5
26453
                mov     edi, [esi+ecx*8+2000h]
26454
                and     edx, 7F8h
26455
                mov     ebp, [esi+ecx*8+2004h]
26456
                xor     eax, edi
26457
                mov     ecx, [esp+0F4h]
26458
                mov     edi, [esi+edx+2800h]
26459
                xor     ebx, ebp
26460
                shr     ecx, 0Dh
26461
                mov     ebp, [esi+edx+2804h]
26462
                and     ecx, 7F8h
26463
                xor     eax, edi
26464
                mov     edx, [esp+0ECh]
26465
                xor     ebx, ebp
26466
                shr     edx, 18h
26467
                mov     edi, [esi+ecx+3000h]
26468
                mov     ebp, [esi+ecx+3004h]
26469
                xor     eax, edi
26470
                mov     edi, [esi+edx*8+3800h]
26471
                xor     ebx, ebp
26472
                mov     ebp, [esi+edx*8+3804h]
26473
                xor     eax, edi
26474
                xor     ebx, ebp
26475
                mov     [esp+20h], eax
26476
                mov     [esp+24h], ebx
26477
                mov     eax, [esp+68h]
26478
                mov     ebx, [esp+6Ch]
26479
                mov     ecx, [esp+0E8h]
26480
                mov     edx, [esp+0E0h]
26481
                and     ecx, 0FFh
26482
                shr     edx, 5
26483
                mov     edi, [esi+ecx*8]
26484
                and     edx, 7F8h
26485
                mov     ebp, [esi+ecx*8+4]
26486
                xor     eax, edi
26487
                mov     ecx, [esp+0D8h]
26488
                mov     edi, [esi+edx+800h]
26489
                xor     ebx, ebp
26490
                shr     ecx, 0Dh
26491
                mov     ebp, [esi+edx+804h]
26492
                and     ecx, 7F8h
26493
                xor     eax, edi
26494
                mov     edx, [esp+0D0h]
26495
                xor     ebx, ebp
26496
                shr     edx, 18h
26497
                mov     edi, [esi+ecx+1000h]
26498
                mov     ebp, [esi+ecx+1004h]
26499
                xor     eax, edi
26500
                mov     edi, [esi+edx*8+1800h]
26501
                xor     ebx, ebp
26502
                mov     ebp, [esi+edx*8+1804h]
26503
                xor     eax, edi
26504
                xor     ebx, ebp
26505
                mov     ecx, [esp+0CCh]
26506
                mov     edx, [esp+0C4h]
26507
                and     ecx, 0FFh
26508
                shr     edx, 5
26509
                mov     edi, [esi+ecx*8+2000h]
26510
                and     edx, 7F8h
26511
                mov     ebp, [esi+ecx*8+2004h]
26512
                xor     eax, edi
26513
                mov     ecx, [esp+0FCh]
26514
                mov     edi, [esi+edx+2800h]
26515
                xor     ebx, ebp
26516
                shr     ecx, 0Dh
26517
                mov     ebp, [esi+edx+2804h]
26518
                and     ecx, 7F8h
26519
                xor     eax, edi
26520
                mov     edx, [esp+0F4h]
26521
                xor     ebx, ebp
26522
                shr     edx, 18h
26523
                mov     edi, [esi+ecx+3000h]
26524
                mov     ebp, [esi+ecx+3004h]
26525
                xor     eax, edi
26526
                mov     edi, [esi+edx*8+3800h]
26527
                xor     ebx, ebp
26528
                mov     ebp, [esi+edx*8+3804h]
26529
                xor     eax, edi
26530
                xor     ebx, ebp
26531
                mov     [esp+28h], eax
26532
                mov     [esp+2Ch], ebx
26533
                mov     eax, [esp+70h]
26534
                mov     ebx, [esp+74h]
26535
                mov     ecx, [esp+0F0h]
26536
                mov     edx, [esp+0E8h]
26537
                and     ecx, 0FFh
26538
                shr     edx, 5
26539
                mov     edi, [esi+ecx*8]
26540
                and     edx, 7F8h
26541
                mov     ebp, [esi+ecx*8+4]
26542
                xor     eax, edi
26543
                mov     ecx, [esp+0E0h]
26544
                mov     edi, [esi+edx+800h]
26545
                xor     ebx, ebp
26546
                shr     ecx, 0Dh
26547
                mov     ebp, [esi+edx+804h]
26548
                and     ecx, 7F8h
26549
                xor     eax, edi
26550
                mov     edx, [esp+0D8h]
26551
                xor     ebx, ebp
26552
                shr     edx, 18h
26553
                mov     edi, [esi+ecx+1000h]
26554
                mov     ebp, [esi+ecx+1004h]
26555
                xor     eax, edi
26556
                mov     edi, [esi+edx*8+1800h]
26557
                xor     ebx, ebp
26558
                mov     ebp, [esi+edx*8+1804h]
26559
                xor     eax, edi
26560
                xor     ebx, ebp
26561
                mov     ecx, [esp+0D4h]
26562
                mov     edx, [esp+0CCh]
26563
                and     ecx, 0FFh
26564
                shr     edx, 5
26565
                mov     edi, [esi+ecx*8+2000h]
26566
                and     edx, 7F8h
26567
                mov     ebp, [esi+ecx*8+2004h]
26568
                xor     eax, edi
26569
                mov     ecx, [esp+0C4h]
26570
                mov     edi, [esi+edx+2800h]
26571
                xor     ebx, ebp
26572
                shr     ecx, 0Dh
26573
                mov     ebp, [esi+edx+2804h]
26574
                and     ecx, 7F8h
26575
                xor     eax, edi
26576
                mov     edx, [esp+0FCh]
26577
                xor     ebx, ebp
26578
                shr     edx, 18h
26579
                mov     edi, [esi+ecx+3000h]
26580
                mov     ebp, [esi+ecx+3004h]
26581
                xor     eax, edi
26582
                mov     edi, [esi+edx*8+3800h]
26583
                xor     ebx, ebp
26584
                mov     ebp, [esi+edx*8+3804h]
26585
                xor     eax, edi
26586
                xor     ebx, ebp
26587
                mov     [esp+30h], eax
26588
                mov     [esp+34h], ebx
26589
                mov     eax, [esp+78h]
26590
                mov     ebx, [esp+7Ch]
26591
                mov     ecx, [esp+0F8h]
26592
                mov     edx, [esp+0F0h]
26593
                and     ecx, 0FFh
26594
                shr     edx, 5
26595
                mov     edi, [esi+ecx*8]
26596
                and     edx, 7F8h
26597
                mov     ebp, [esi+ecx*8+4]
26598
                xor     eax, edi
26599
                mov     ecx, [esp+0E8h]
26600
                mov     edi, [esi+edx+800h]
26601
                xor     ebx, ebp
26602
                shr     ecx, 0Dh
26603
                mov     ebp, [esi+edx+804h]
26604
                and     ecx, 7F8h
26605
                xor     eax, edi
26606
                mov     edx, [esp+0E0h]
26607
                xor     ebx, ebp
26608
                shr     edx, 18h
26609
                mov     edi, [esi+ecx+1000h]
26610
                mov     ebp, [esi+ecx+1004h]
26611
                xor     eax, edi
26612
                mov     edi, [esi+edx*8+1800h]
26613
                xor     ebx, ebp
26614
                mov     ebp, [esi+edx*8+1804h]
26615
                xor     eax, edi
26616
                xor     ebx, ebp
26617
                mov     ecx, [esp+0DCh]
26618
                mov     edx, [esp+0D4h]
26619
                and     ecx, 0FFh
26620
                shr     edx, 5
26621
                mov     edi, [esi+ecx*8+2000h]
26622
                and     edx, 7F8h
26623
                mov     ebp, [esi+ecx*8+2004h]
26624
                xor     eax, edi
26625
                mov     ecx, [esp+0CCh]
26626
                mov     edi, [esi+edx+2800h]
26627
                xor     ebx, ebp
26628
                shr     ecx, 0Dh
26629
                mov     ebp, [esi+edx+2804h]
26630
                and     ecx, 7F8h
26631
                xor     eax, edi
26632
                mov     edx, [esp+0C4h]
26633
                xor     ebx, ebp
26634
                shr     edx, 18h
26635
                mov     edi, [esi+ecx+3000h]
26636
                mov     ebp, [esi+ecx+3004h]
26637
                xor     eax, edi
26638
                mov     edi, [esi+edx*8+3800h]
26639
                xor     ebx, ebp
26640
                mov     ebp, [esi+edx*8+3804h]
26641
                xor     eax, edi
26642
                xor     ebx, ebp
26643
                mov     [esp+38h], eax
26644
                mov     [esp+3Ch], ebx
26645
                mov     ebp, [esp+108h]
26646
                add     ebp, 10h
26647
                cmp     ebp, 50h
26648
                jnz     @@_loop_start
26649
                mov     ebp, [esp+114h]
26650
                mov     edi, [esp+110h]
26651
                mov     esi, [esp+10Ch]
26652
                mov     eax, [esp]
26653
                mov     ebx, [esp+4]
26654
                mov     ecx, [edi]
26655
                mov     edx, [edi+4]
26656
                xor     eax, ecx
26657
                xor     ebx, edx
26658
                mov     ecx, [esi]
26659
                mov     edx, [esi+4]
26660
                xor     eax, ecx
26661
                xor     ebx, edx
26662
                mov     [esi], eax
26663
                mov     [esi+4], ebx
26664
                mov     eax, [esp+8]
26665
                mov     ebx, [esp+0Ch]
26666
                mov     ecx, [edi+8]
26667
                mov     edx, [edi+0Ch]
26668
                xor     eax, ecx
26669
                xor     ebx, edx
26670
                mov     ecx, [esi+8]
26671
                mov     edx, [esi+0Ch]
26672
                xor     eax, ecx
26673
                xor     ebx, edx
26674
                mov     [esi+8], eax
26675
                mov     [esi+0Ch], ebx
26676
                mov     eax, [esp+10h]
26677
                mov     ebx, [esp+14h]
26678
                mov     ecx, [edi+10h]
26679
                mov     edx, [edi+14h]
26680
                xor     eax, ecx
26681
                xor     ebx, edx
26682
                mov     ecx, [esi+10h]
26683
                mov     edx, [esi+14h]
26684
                xor     eax, ecx
26685
                xor     ebx, edx
26686
                mov     [esi+10h], eax
26687
                mov     [esi+14h], ebx
26688
                mov     eax, [esp+18h]
26689
                mov     ebx, [esp+1Ch]
26690
                mov     ecx, [edi+18h]
26691
                mov     edx, [edi+1Ch]
26692
                xor     eax, ecx
26693
                xor     ebx, edx
26694
                mov     ecx, [esi+18h]
26695
                mov     edx, [esi+1Ch]
26696
                xor     eax, ecx
26697
                xor     ebx, edx
26698
                mov     [esi+18h], eax
26699
                mov     [esi+1Ch], ebx
26700
                mov     eax, [esp+20h]
26701
                mov     ebx, [esp+24h]
26702
                mov     ecx, [edi+20h]
26703
                mov     edx, [edi+24h]
26704
                xor     eax, ecx
26705
                xor     ebx, edx
26706
                mov     ecx, [esi+20h]
26707
                mov     edx, [esi+24h]
26708
                xor     eax, ecx
26709
                xor     ebx, edx
26710
                mov     [esi+20h], eax
26711
                mov     [esi+24h], ebx
26712
                mov     eax, [esp+28h]
26713
                mov     ebx, [esp+2Ch]
26714
                mov     ecx, [edi+28h]
26715
                mov     edx, [edi+2Ch]
26716
                xor     eax, ecx
26717
                xor     ebx, edx
26718
                mov     ecx, [esi+28h]
26719
                mov     edx, [esi+2Ch]
26720
                xor     eax, ecx
26721
                xor     ebx, edx
26722
                mov     [esi+28h], eax
26723
                mov     [esi+2Ch], ebx
26724
                mov     eax, [esp+30h]
26725
                mov     ebx, [esp+34h]
26726
                mov     ecx, [edi+30h]
26727
                mov     edx, [edi+34h]
26728
                xor     eax, ecx
26729
                xor     ebx, edx
26730
                mov     ecx, [esi+30h]
26731
                mov     edx, [esi+34h]
26732
                xor     eax, ecx
26733
                xor     ebx, edx
26734
                mov     [esi+30h], eax
26735
                mov     [esi+34h], ebx
26736
                mov     eax, [esp+38h]
26737
                mov     ebx, [esp+3Ch]
26738
                mov     ecx, [edi+38h]
26739
                mov     edx, [edi+3Ch]
26740
                xor     eax, ecx
26741
                xor     ebx, edx
26742
                mov     ecx, [esi+38h]
26743
                mov     edx, [esi+3Ch]
26744
                xor     eax, ecx
26745
                xor     ebx, edx
26746
                mov     [esi+38h], eax
26747
                mov     [esi+3Ch], ebx
26748
                mov     esp, ebp
26749
                pop  ebp
26750
                pop  edi
26751
                pop  esi
26752
                pop  ebx
26753
end;
26754
{$ENDIF}
26755
26756
{$IFDEF THash_Square_asm}
26757
procedure THash_Square.DoTransform(Buffer: PUInt32Array);
26758
asm
26759
                push    ebx
26760
                push    esi
26761
                push    edi
26762
                mov     esi, edx
26763
                lea     edi, [eax].THash_Square.FDigest
26764
                push    ebp
26765
                lea     eax, Square_PHIr
26766
                lea     edx, Square_TE
26767
                lea     ecx, Square_SEint
26768
26769
                mov     ebp, esp
26770
                add     esp, 0FFFFFF58h
26771
                and     esp, 0FFFFFFE0h
26772
                mov     [esp+90h], edi
26773
                mov     [esp+94h], esi
26774
                mov     [esp+98h], eax
26775
                mov     [esp+9Ch], edx
26776
                mov     [esp+0A0h], ecx
26777
                mov     [esp+0A4h], ebp
26778
                mov     ecx, [edi]
26779
                mov     edx, [edi+4]
26780
                mov     [esp], ecx
26781
                mov     esi, eax
26782
                mov     [esp+4], edx
26783
                mov     ebp, [edi+8]
26784
                mov     edi, [edi+0Ch]
26785
                mov     [esp+8], ebp
26786
                mov     [esp+0Ch], edi
26787
                mov     eax, ecx
26788
                mov     ebx, edx
26789
                mov     ecx, ebp
26790
                mov     ebp, edi
26791
                xor     eax, 1
26792
                ror     ebp, 8
26793
                xor     eax, ebp
26794
                mov     ebp, 0FFh
26795
                xor     ebx, eax
26796
                mov     [esp+10h], eax
26797
                mov     eax, [esp]
26798
                xor     ecx, ebx
26799
                mov     [esp+14h], ebx
26800
                xor     edi, ecx
26801
                mov     [esp+18h], ecx
26802
                mov     [esp+1Ch], edi
26803
                mov     edx, eax
26804
                mov     ebx, eax
26805
                mov     ecx, eax
26806
                shr     eax, 8
26807
                and     ebx, ebp
26808
                shr     ecx, 10h
26809
                and     eax, ebp
26810
                and     ecx, ebp
26811
                mov     ebx, [esi+ebx*4]
26812
                shr     edx, 18h
26813
                mov     eax, [esi+eax*4+400h]
26814
                mov     ecx, [esi+ecx*4+800h]
26815
                xor     ebx, eax
26816
                mov     edx, [esi+edx*4+0C00h]
26817
                xor     ebx, ecx
26818
                mov     eax, [esp+4]
26819
                xor     ebx, edx
26820
                mov     edx, eax
26821
                mov     [esp], ebx
26822
                mov     ebx, eax
26823
                mov     ecx, eax
26824
                shr     eax, 8
26825
                and     ebx, ebp
26826
                shr     ecx, 10h
26827
                and     eax, ebp
26828
                and     ecx, ebp
26829
                mov     ebx, [esi+ebx*4]
26830
                shr     edx, 18h
26831
                mov     eax, [esi+eax*4+400h]
26832
                mov     ecx, [esi+ecx*4+800h]
26833
                xor     ebx, eax
26834
                mov     edx, [esi+edx*4+0C00h]
26835
                xor     ebx, ecx
26836
                mov     eax, [esp+8]
26837
                xor     ebx, edx
26838
                mov     edx, eax
26839
                mov     [esp+4], ebx
26840
                mov     ebx, eax
26841
                mov     ecx, eax
26842
                shr     eax, 8
26843
                and     ebx, ebp
26844
                shr     ecx, 10h
26845
                and     eax, ebp
26846
                and     ecx, ebp
26847
                mov     ebx, [esi+ebx*4]
26848
                shr     edx, 18h
26849
                mov     eax, [esi+eax*4+400h]
26850
                mov     ecx, [esi+ecx*4+800h]
26851
                xor     ebx, eax
26852
                mov     edx, [esi+edx*4+0C00h]
26853
                xor     ebx, ecx
26854
                mov     eax, [esp+0Ch]
26855
                xor     ebx, edx
26856
                mov     edx, eax
26857
                mov     [esp+8], ebx
26858
                mov     ebx, eax
26859
                mov     ecx, eax
26860
                shr     eax, 8
26861
                and     ebx, ebp
26862
                shr     ecx, 10h
26863
                and     eax, ebp
26864
                mov     ebx, [esi+ebx*4]
26865
                and     ecx, ebp
26866
                shr     edx, 18h
26867
                mov     eax, [esi+eax*4+400h]
26868
                mov     ecx, [esi+ecx*4+800h]
26869
                xor     ebx, eax
26870
                mov     edx, [esi+edx*4+0C00h]
26871
                xor     ebx, ecx
26872
                xor     ebx, edx
26873
                mov     [esp+0Ch], ebx
26874
                mov     eax, [esp+10h]
26875
                mov     ebx, [esp+14h]
26876
                mov     ecx, [esp+18h]
26877
                mov     ebp, [esp+1Ch]
26878
                xor     eax, 2
26879
                mov     edi, ebp
26880
                ror     ebp, 8
26881
                xor     eax, ebp
26882
                mov     ebp, 0FFh
26883
                xor     ebx, eax
26884
                mov     [esp+20h], eax
26885
                mov     eax, [esp+10h]
26886
                xor     ecx, ebx
26887
                mov     [esp+24h], ebx
26888
                xor     edi, ecx
26889
                mov     [esp+28h], ecx
26890
                mov     [esp+2Ch], edi
26891
                mov     edx, eax
26892
                mov     ebx, eax
26893
                mov     ecx, eax
26894
                shr     eax, 8
26895
                and     ebx, ebp
26896
                shr     ecx, 10h
26897
                and     eax, ebp
26898
                and     ecx, ebp
26899
                mov     ebx, [esi+ebx*4]
26900
                shr     edx, 18h
26901
                mov     eax, [esi+eax*4+400h]
26902
                mov     ecx, [esi+ecx*4+800h]
26903
                xor     ebx, eax
26904
                mov     edx, [esi+edx*4+0C00h]
26905
                xor     ebx, ecx
26906
                mov     eax, [esp+14h]
26907
                xor     ebx, edx
26908
                mov     edx, eax
26909
                mov     [esp+10h], ebx
26910
                mov     ebx, eax
26911
                mov     ecx, eax
26912
                shr     eax, 8
26913
                and     ebx, ebp
26914
                shr     ecx, 10h
26915
                and     eax, ebp
26916
                and     ecx, ebp
26917
                mov     ebx, [esi+ebx*4]
26918
                shr     edx, 18h
26919
                mov     eax, [esi+eax*4+400h]
26920
                mov     ecx, [esi+ecx*4+800h]
26921
                xor     ebx, eax
26922
                mov     edx, [esi+edx*4+0C00h]
26923
                xor     ebx, ecx
26924
                mov     eax, [esp+18h]
26925
                xor     ebx, edx
26926
                mov     edx, eax
26927
                mov     [esp+14h], ebx
26928
                mov     ebx, eax
26929
                mov     ecx, eax
26930
                shr     eax, 8
26931
                and     ebx, ebp
26932
                shr     ecx, 10h
26933
                and     eax, ebp
26934
                and     ecx, ebp
26935
                mov     ebx, [esi+ebx*4]
26936
                shr     edx, 18h
26937
                mov     eax, [esi+eax*4+400h]
26938
                mov     ecx, [esi+ecx*4+800h]
26939
                xor     ebx, eax
26940
                mov     edx, [esi+edx*4+0C00h]
26941
                xor     ebx, ecx
26942
                mov     eax, [esp+1Ch]
26943
                xor     ebx, edx
26944
                mov     edx, eax
26945
                mov     [esp+18h], ebx
26946
                mov     ebx, eax
26947
                mov     ecx, eax
26948
                shr     eax, 8
26949
                and     ebx, ebp
26950
                shr     ecx, 10h
26951
                and     eax, ebp
26952
                mov     ebx, [esi+ebx*4]
26953
                and     ecx, ebp
26954
                shr     edx, 18h
26955
                mov     eax, [esi+eax*4+400h]
26956
                mov     ecx, [esi+ecx*4+800h]
26957
                xor     ebx, eax
26958
                mov     edx, [esi+edx*4+0C00h]
26959
                xor     ebx, ecx
26960
                xor     ebx, edx
26961
                mov     [esp+1Ch], ebx
26962
                mov     eax, [esp+20h]
26963
                mov     ebx, [esp+24h]
26964
                mov     ecx, [esp+28h]
26965
                mov     ebp, [esp+2Ch]
26966
                xor     eax, 4
26967
                mov     edi, ebp
26968
                ror     ebp, 8
26969
                xor     eax, ebp
26970
                mov     ebp, 0FFh
26971
                xor     ebx, eax
26972
                mov     [esp+30h], eax
26973
                mov     eax, [esp+20h]
26974
                xor     ecx, ebx
26975
                mov     [esp+34h], ebx
26976
                xor     edi, ecx
26977
                mov     [esp+38h], ecx
26978
                mov     [esp+3Ch], edi
26979
                mov     edx, eax
26980
                mov     ebx, eax
26981
                mov     ecx, eax
26982
                shr     eax, 8
26983
                and     ebx, ebp
26984
                shr     ecx, 10h
26985
                and     eax, ebp
26986
                and     ecx, ebp
26987
                mov     ebx, [esi+ebx*4]
26988
                shr     edx, 18h
26989
                mov     eax, [esi+eax*4+400h]
26990
                mov     ecx, [esi+ecx*4+800h]
26991
                xor     ebx, eax
26992
                mov     edx, [esi+edx*4+0C00h]
26993
                xor     ebx, ecx
26994
                mov     eax, [esp+24h]
26995
                xor     ebx, edx
26996
                mov     edx, eax
26997
                mov     [esp+20h], ebx
26998
                mov     ebx, eax
26999
                mov     ecx, eax
27000
                shr     eax, 8
27001
                and     ebx, ebp
27002
                shr     ecx, 10h
27003
                and     eax, ebp
27004
                and     ecx, ebp
27005
                mov     ebx, [esi+ebx*4]
27006
                shr     edx, 18h
27007
                mov     eax, [esi+eax*4+400h]
27008
                mov     ecx, [esi+ecx*4+800h]
27009
                xor     ebx, eax
27010
                mov     edx, [esi+edx*4+0C00h]
27011
                xor     ebx, ecx
27012
                mov     eax, [esp+28h]
27013
                xor     ebx, edx
27014
                mov     edx, eax
27015
                mov     [esp+24h], ebx
27016
                mov     ebx, eax
27017
                mov     ecx, eax
27018
                shr     eax, 8
27019
                and     ebx, ebp
27020
                shr     ecx, 10h
27021
                and     eax, ebp
27022
                and     ecx, ebp
27023
                mov     ebx, [esi+ebx*4]
27024
                shr     edx, 18h
27025
                mov     eax, [esi+eax*4+400h]
27026
                mov     ecx, [esi+ecx*4+800h]
27027
                xor     ebx, eax
27028
                mov     edx, [esi+edx*4+0C00h]
27029
                xor     ebx, ecx
27030
                mov     eax, [esp+2Ch]
27031
                xor     ebx, edx
27032
                mov     edx, eax
27033
                mov     [esp+28h], ebx
27034
                mov     ebx, eax
27035
                mov     ecx, eax
27036
                shr     eax, 8
27037
                and     ebx, ebp
27038
                shr     ecx, 10h
27039
                and     eax, ebp
27040
                mov     ebx, [esi+ebx*4]
27041
                and     ecx, ebp
27042
                shr     edx, 18h
27043
                mov     eax, [esi+eax*4+400h]
27044
                mov     ecx, [esi+ecx*4+800h]
27045
                xor     ebx, eax
27046
                mov     edx, [esi+edx*4+0C00h]
27047
                xor     ebx, ecx
27048
                xor     ebx, edx
27049
                mov     [esp+2Ch], ebx
27050
                mov     eax, [esp+30h]
27051
                mov     ebx, [esp+34h]
27052
                mov     ecx, [esp+38h]
27053
                mov     ebp, [esp+3Ch]
27054
                xor     eax, 8
27055
                mov     edi, ebp
27056
                ror     ebp, 8
27057
                xor     eax, ebp
27058
                mov     ebp, 0FFh
27059
                xor     ebx, eax
27060
                mov     [esp+40h], eax
27061
                mov     eax, [esp+30h]
27062
                xor     ecx, ebx
27063
                mov     [esp+44h], ebx
27064
                xor     edi, ecx
27065
                mov     [esp+48h], ecx
27066
                mov     [esp+4Ch], edi
27067
                mov     edx, eax
27068
                mov     ebx, eax
27069
                mov     ecx, eax
27070
                shr     eax, 8
27071
                and     ebx, ebp
27072
                shr     ecx, 10h
27073
                and     eax, ebp
27074
                and     ecx, ebp
27075
                mov     ebx, [esi+ebx*4]
27076
                shr     edx, 18h
27077
                mov     eax, [esi+eax*4+400h]
27078
                mov     ecx, [esi+ecx*4+800h]
27079
                xor     ebx, eax
27080
                mov     edx, [esi+edx*4+0C00h]
27081
                xor     ebx, ecx
27082
                mov     eax, [esp+34h]
27083
                xor     ebx, edx
27084
                mov     edx, eax
27085
                mov     [esp+30h], ebx
27086
                mov     ebx, eax
27087
                mov     ecx, eax
27088
                shr     eax, 8
27089
                and     ebx, ebp
27090
                shr     ecx, 10h
27091
                and     eax, ebp
27092
                and     ecx, ebp
27093
                mov     ebx, [esi+ebx*4]
27094
                shr     edx, 18h
27095
                mov     eax, [esi+eax*4+400h]
27096
                mov     ecx, [esi+ecx*4+800h]
27097
                xor     ebx, eax
27098
                mov     edx, [esi+edx*4+0C00h]
27099
                xor     ebx, ecx
27100
                mov     eax, [esp+38h]
27101
                xor     ebx, edx
27102
                mov     edx, eax
27103
                mov     [esp+34h], ebx
27104
                mov     ebx, eax
27105
                mov     ecx, eax
27106
                shr     eax, 8
27107
                and     ebx, ebp
27108
                shr     ecx, 10h
27109
                and     eax, ebp
27110
                and     ecx, ebp
27111
                mov     ebx, [esi+ebx*4]
27112
                shr     edx, 18h
27113
                mov     eax, [esi+eax*4+400h]
27114
                mov     ecx, [esi+ecx*4+800h]
27115
                xor     ebx, eax
27116
                mov     edx, [esi+edx*4+0C00h]
27117
                xor     ebx, ecx
27118
                mov     eax, [esp+3Ch]
27119
                xor     ebx, edx
27120
                mov     edx, eax
27121
                mov     [esp+38h], ebx
27122
                mov     ebx, eax
27123
                mov     ecx, eax
27124
                shr     eax, 8
27125
                and     ebx, ebp
27126
                shr     ecx, 10h
27127
                and     eax, ebp
27128
                mov     ebx, [esi+ebx*4]
27129
                and     ecx, ebp
27130
                shr     edx, 18h
27131
                mov     eax, [esi+eax*4+400h]
27132
                mov     ecx, [esi+ecx*4+800h]
27133
                xor     ebx, eax
27134
                mov     edx, [esi+edx*4+0C00h]
27135
                xor     ebx, ecx
27136
                xor     ebx, edx
27137
                mov     [esp+3Ch], ebx
27138
                mov     eax, [esp+40h]
27139
                mov     ebx, [esp+44h]
27140
                mov     ecx, [esp+48h]
27141
                mov     ebp, [esp+4Ch]
27142
                xor     eax, 10h
27143
                mov     edi, ebp
27144
                ror     ebp, 8
27145
                xor     eax, ebp
27146
                mov     ebp, 0FFh
27147
                xor     ebx, eax
27148
                mov     [esp+50h], eax
27149
                mov     eax, [esp+40h]
27150
                xor     ecx, ebx
27151
                mov     [esp+54h], ebx
27152
                xor     edi, ecx
27153
                mov     [esp+58h], ecx
27154
                mov     [esp+5Ch], edi
27155
                mov     edx, eax
27156
                mov     ebx, eax
27157
                mov     ecx, eax
27158
                shr     eax, 8
27159
                and     ebx, ebp
27160
                shr     ecx, 10h
27161
                and     eax, ebp
27162
                and     ecx, ebp
27163
                mov     ebx, [esi+ebx*4]
27164
                shr     edx, 18h
27165
                mov     eax, [esi+eax*4+400h]
27166
                mov     ecx, [esi+ecx*4+800h]
27167
                xor     ebx, eax
27168
                mov     edx, [esi+edx*4+0C00h]
27169
                xor     ebx, ecx
27170
                mov     eax, [esp+44h]
27171
                xor     ebx, edx
27172
                mov     edx, eax
27173
                mov     [esp+40h], ebx
27174
                mov     ebx, eax
27175
                mov     ecx, eax
27176
                shr     eax, 8
27177
                and     ebx, ebp
27178
                shr     ecx, 10h
27179
                and     eax, ebp
27180
                and     ecx, ebp
27181
                mov     ebx, [esi+ebx*4]
27182
                shr     edx, 18h
27183
                mov     eax, [esi+eax*4+400h]
27184
                mov     ecx, [esi+ecx*4+800h]
27185
                xor     ebx, eax
27186
                mov     edx, [esi+edx*4+0C00h]
27187
                xor     ebx, ecx
27188
                mov     eax, [esp+48h]
27189
                xor     ebx, edx
27190
                mov     edx, eax
27191
                mov     [esp+44h], ebx
27192
                mov     ebx, eax
27193
                mov     ecx, eax
27194
                shr     eax, 8
27195
                and     ebx, ebp
27196
                shr     ecx, 10h
27197
                and     eax, ebp
27198
                and     ecx, ebp
27199
                mov     ebx, [esi+ebx*4]
27200
                shr     edx, 18h
27201
                mov     eax, [esi+eax*4+400h]
27202
                mov     ecx, [esi+ecx*4+800h]
27203
                xor     ebx, eax
27204
                mov     edx, [esi+edx*4+0C00h]
27205
                xor     ebx, ecx
27206
                mov     eax, [esp+4Ch]
27207
                xor     ebx, edx
27208
                mov     edx, eax
27209
                mov     [esp+48h], ebx
27210
                mov     ebx, eax
27211
                mov     ecx, eax
27212
                shr     eax, 8
27213
                and     ebx, ebp
27214
                shr     ecx, 10h
27215
                and     eax, ebp
27216
                mov     ebx, [esi+ebx*4]
27217
                and     ecx, ebp
27218
                shr     edx, 18h
27219
                mov     eax, [esi+eax*4+400h]
27220
                mov     ecx, [esi+ecx*4+800h]
27221
                xor     ebx, eax
27222
                mov     edx, [esi+edx*4+0C00h]
27223
                xor     ebx, ecx
27224
                xor     ebx, edx
27225
                mov     [esp+4Ch], ebx
27226
                mov     eax, [esp+50h]
27227
                mov     ebx, [esp+54h]
27228
                mov     ecx, [esp+58h]
27229
                mov     ebp, [esp+5Ch]
27230
                xor     eax, 20h
27231
                mov     edi, ebp
27232
                ror     ebp, 8
27233
                xor     eax, ebp
27234
                mov     ebp, 0FFh
27235
                xor     ebx, eax
27236
                mov     [esp+60h], eax
27237
                mov     eax, [esp+50h]
27238
                xor     ecx, ebx
27239
                mov     [esp+64h], ebx
27240
                xor     edi, ecx
27241
                mov     [esp+68h], ecx
27242
                mov     [esp+6Ch], edi
27243
                mov     edx, eax
27244
                mov     ebx, eax
27245
                mov     ecx, eax
27246
                shr     eax, 8
27247
                and     ebx, ebp
27248
                shr     ecx, 10h
27249
                and     eax, ebp
27250
                and     ecx, ebp
27251
                mov     ebx, [esi+ebx*4]
27252
                shr     edx, 18h
27253
                mov     eax, [esi+eax*4+400h]
27254
                mov     ecx, [esi+ecx*4+800h]
27255
                xor     ebx, eax
27256
                mov     edx, [esi+edx*4+0C00h]
27257
                xor     ebx, ecx
27258
                mov     eax, [esp+54h]
27259
                xor     ebx, edx
27260
                mov     edx, eax
27261
                mov     [esp+50h], ebx
27262
                mov     ebx, eax
27263
                mov     ecx, eax
27264
                shr     eax, 8
27265
                and     ebx, ebp
27266
                shr     ecx, 10h
27267
                and     eax, ebp
27268
                and     ecx, ebp
27269
                mov     ebx, [esi+ebx*4]
27270
                shr     edx, 18h
27271
                mov     eax, [esi+eax*4+400h]
27272
                mov     ecx, [esi+ecx*4+800h]
27273
                xor     ebx, eax
27274
                mov     edx, [esi+edx*4+0C00h]
27275
                xor     ebx, ecx
27276
                mov     eax, [esp+58h]
27277
                xor     ebx, edx
27278
                mov     edx, eax
27279
                mov     [esp+54h], ebx
27280
                mov     ebx, eax
27281
                mov     ecx, eax
27282
                shr     eax, 8
27283
                and     ebx, ebp
27284
                shr     ecx, 10h
27285
                and     eax, ebp
27286
                and     ecx, ebp
27287
                mov     ebx, [esi+ebx*4]
27288
                shr     edx, 18h
27289
                mov     eax, [esi+eax*4+400h]
27290
                mov     ecx, [esi+ecx*4+800h]
27291
                xor     ebx, eax
27292
                mov     edx, [esi+edx*4+0C00h]
27293
                xor     ebx, ecx
27294
                mov     eax, [esp+5Ch]
27295
                xor     ebx, edx
27296
                mov     edx, eax
27297
                mov     [esp+58h], ebx
27298
                mov     ebx, eax
27299
                mov     ecx, eax
27300
                shr     eax, 8
27301
                and     ebx, ebp
27302
                shr     ecx, 10h
27303
                and     eax, ebp
27304
                mov     ebx, [esi+ebx*4]
27305
                and     ecx, ebp
27306
                shr     edx, 18h
27307
                mov     eax, [esi+eax*4+400h]
27308
                mov     ecx, [esi+ecx*4+800h]
27309
                xor     ebx, eax
27310
                mov     edx, [esi+edx*4+0C00h]
27311
                xor     ebx, ecx
27312
                xor     ebx, edx
27313
                mov     [esp+5Ch], ebx
27314
                mov     eax, [esp+60h]
27315
                mov     ebx, [esp+64h]
27316
                mov     ecx, [esp+68h]
27317
                mov     ebp, [esp+6Ch]
27318
                xor     eax, 40h
27319
                mov     edi, ebp
27320
                ror     ebp, 8
27321
                xor     eax, ebp
27322
                mov     ebp, 0FFh
27323
                xor     ebx, eax
27324
                mov     [esp+70h], eax
27325
                mov     eax, [esp+60h]
27326
                xor     ecx, ebx
27327
                mov     [esp+74h], ebx
27328
                xor     edi, ecx
27329
                mov     [esp+78h], ecx
27330
                mov     [esp+7Ch], edi
27331
                mov     edx, eax
27332
                mov     ebx, eax
27333
                mov     ecx, eax
27334
                shr     eax, 8
27335
                and     ebx, ebp
27336
                shr     ecx, 10h
27337
                and     eax, ebp
27338
                and     ecx, ebp
27339
                mov     ebx, [esi+ebx*4]
27340
                shr     edx, 18h
27341
                mov     eax, [esi+eax*4+400h]
27342
                mov     ecx, [esi+ecx*4+800h]
27343
                xor     ebx, eax
27344
                mov     edx, [esi+edx*4+0C00h]
27345
                xor     ebx, ecx
27346
                mov     eax, [esp+64h]
27347
                xor     ebx, edx
27348
                mov     edx, eax
27349
                mov     [esp+60h], ebx
27350
                mov     ebx, eax
27351
                mov     ecx, eax
27352
                shr     eax, 8
27353
                and     ebx, ebp
27354
                shr     ecx, 10h
27355
                and     eax, ebp
27356
                and     ecx, ebp
27357
                mov     ebx, [esi+ebx*4]
27358
                shr     edx, 18h
27359
                mov     eax, [esi+eax*4+400h]
27360
                mov     ecx, [esi+ecx*4+800h]
27361
                xor     ebx, eax
27362
                mov     edx, [esi+edx*4+0C00h]
27363
                xor     ebx, ecx
27364
                mov     eax, [esp+68h]
27365
                xor     ebx, edx
27366
                mov     edx, eax
27367
                mov     [esp+64h], ebx
27368
                mov     ebx, eax
27369
                mov     ecx, eax
27370
                shr     eax, 8
27371
                and     ebx, ebp
27372
                shr     ecx, 10h
27373
                and     eax, ebp
27374
                and     ecx, ebp
27375
                mov     ebx, [esi+ebx*4]
27376
                shr     edx, 18h
27377
                mov     eax, [esi+eax*4+400h]
27378
                mov     ecx, [esi+ecx*4+800h]
27379
                xor     ebx, eax
27380
                mov     edx, [esi+edx*4+0C00h]
27381
                xor     ebx, ecx
27382
                mov     eax, [esp+6Ch]
27383
                xor     ebx, edx
27384
                mov     edx, eax
27385
                mov     [esp+68h], ebx
27386
                mov     ebx, eax
27387
                mov     ecx, eax
27388
                shr     eax, 8
27389
                and     ebx, ebp
27390
                shr     ecx, 10h
27391
                and     eax, ebp
27392
                mov     ebx, [esi+ebx*4]
27393
                and     ecx, ebp
27394
                shr     edx, 18h
27395
                mov     eax, [esi+eax*4+400h]
27396
                mov     ecx, [esi+ecx*4+800h]
27397
                xor     ebx, eax
27398
                mov     edx, [esi+edx*4+0C00h]
27399
                xor     ebx, ecx
27400
                xor     ebx, edx
27401
                mov     [esp+6Ch], ebx
27402
                mov     eax, [esp+70h]
27403
                mov     ebx, [esp+74h]
27404
                mov     ecx, [esp+78h]
27405
                mov     ebp, [esp+7Ch]
27406
                xor     eax, 80h
27407
                mov     edi, ebp
27408
                ror     ebp, 8
27409
                xor     eax, ebp
27410
                mov     ebp, 0FFh
27411
                xor     ebx, eax
27412
                mov     [esp+80h], eax
27413
                mov     eax, [esp+70h]
27414
                xor     ecx, ebx
27415
                mov     [esp+84h], ebx
27416
                xor     edi, ecx
27417
                mov     [esp+88h], ecx
27418
                mov     [esp+8Ch], edi
27419
                mov     edx, eax
27420
                mov     ebx, eax
27421
                mov     ecx, eax
27422
                shr     eax, 8
27423
                and     ebx, ebp
27424
                shr     ecx, 10h
27425
                and     eax, ebp
27426
                and     ecx, ebp
27427
                mov     ebx, [esi+ebx*4]
27428
                shr     edx, 18h
27429
                mov     eax, [esi+eax*4+400h]
27430
                mov     ecx, [esi+ecx*4+800h]
27431
                xor     ebx, eax
27432
                mov     edx, [esi+edx*4+0C00h]
27433
                xor     ebx, ecx
27434
                mov     eax, [esp+74h]
27435
                xor     ebx, edx
27436
                mov     edx, eax
27437
                mov     [esp+70h], ebx
27438
                mov     ebx, eax
27439
                mov     ecx, eax
27440
                shr     eax, 8
27441
                and     ebx, ebp
27442
                shr     ecx, 10h
27443
                and     eax, ebp
27444
                and     ecx, ebp
27445
                mov     ebx, [esi+ebx*4]
27446
                shr     edx, 18h
27447
                mov     eax, [esi+eax*4+400h]
27448
                mov     ecx, [esi+ecx*4+800h]
27449
                xor     ebx, eax
27450
                mov     edx, [esi+edx*4+0C00h]
27451
                xor     ebx, ecx
27452
                mov     eax, [esp+78h]
27453
                xor     ebx, edx
27454
                mov     edx, eax
27455
                mov     [esp+74h], ebx
27456
                mov     ebx, eax
27457
                mov     ecx, eax
27458
                shr     eax, 8
27459
                and     ebx, ebp
27460
                shr     ecx, 10h
27461
                and     eax, ebp
27462
                and     ecx, ebp
27463
                mov     ebx, [esi+ebx*4]
27464
                shr     edx, 18h
27465
                mov     eax, [esi+eax*4+400h]
27466
                mov     ecx, [esi+ecx*4+800h]
27467
                xor     ebx, eax
27468
                mov     edx, [esi+edx*4+0C00h]
27469
                xor     ebx, ecx
27470
                mov     eax, [esp+7Ch]
27471
                xor     ebx, edx
27472
                mov     edx, eax
27473
                mov     [esp+78h], ebx
27474
                mov     ebx, eax
27475
                mov     ecx, eax
27476
                shr     eax, 8
27477
                and     ebx, ebp
27478
                shr     ecx, 10h
27479
                and     eax, ebp
27480
                mov     ebx, [esi+ebx*4]
27481
                and     ecx, ebp
27482
                shr     edx, 18h
27483
                mov     eax, [esi+eax*4+400h]
27484
                mov     ecx, [esi+ecx*4+800h]
27485
                xor     ebx, eax
27486
                mov     edx, [esi+edx*4+0C00h]
27487
                xor     ebx, ecx
27488
                xor     ebx, edx
27489
                mov     [esp+7Ch], ebx
27490
                mov     esi, [esp+94h]
27491
                mov     eax, [esp]
27492
                mov     ebx, [esp+4]
27493
                mov     ecx, [esp+8]
27494
                mov     edx, [esp+0Ch]
27495
                mov     edi, [esi]
27496
                mov     ebp, [esi+4]
27497
                xor     eax, edi
27498
                xor     ebx, ebp
27499
                mov     edi, [esi+8]
27500
                mov     ebp, [esi+0Ch]
27501
                mov     [esp], eax
27502
                mov     [esp+4], ebx
27503
                xor     ecx, edi
27504
                xor     edx, ebp
27505
                mov     [esp+8], ecx
27506
                mov     [esp+0Ch], edx
27507
                mov     esi, [esp+9Ch]
27508
                mov     eax, [esp]
27509
                mov     ecx, [esp+4]
27510
                mov     ebx, eax
27511
                mov     edx, ecx
27512
                shr     eax, 8
27513
                mov     edi, [esp+8]
27514
                and     ebx, 0FFh
27515
                mov     ebp, [esp+0Ch]
27516
                shr     ecx, 8
27517
                and     eax, 0FFh
27518
                and     edx, 0FFh
27519
                and     ecx, 0FFh
27520
                mov     ebx, [esi+ebx*4]
27521
                mov     eax, [esi+eax*4]
27522
                mov     edx, [esi+edx*4+400h]
27523
                mov     ecx, [esi+ecx*4+400h]
27524
                xor     ebx, edx
27525
                mov     edx, edi
27526
                shr     edi, 8
27527
                xor     eax, ecx
27528
                mov     ecx, ebp
27529
                and     edx, 0FFh
27530
                shr     ebp, 8
27531
                and     edi, 0FFh
27532
                and     ecx, 0FFh
27533
                mov     edx, [esi+edx*4+800h]
27534
                and     ebp, 0FFh
27535
                mov     edi, [esi+edi*4+800h]
27536
                xor     ebx, edx
27537
                mov     edx, [esp+10h]
27538
                mov     ecx, [esi+ecx*4+0C00h]
27539
                xor     eax, edi
27540
                xor     ebx, ecx
27541
                mov     ecx, [esp+14h]
27542
                xor     ebx, edx
27543
                xor     eax, ecx
27544
                mov     ebp, [esi+ebp*4+0C00h]
27545
                mov     [esp+10h], ebx
27546
                xor     eax, ebp
27547
                mov     [esp+14h], eax
27548
                mov     ecx, [esp]
27549
                mov     edx, [esp+4]
27550
                mov     edi, ecx
27551
                shr     ecx, 10h
27552
                mov     eax, [esp+8]
27553
                mov     ebp, edx
27554
                mov     ebx, [esp+0Ch]
27555
                shr     edx, 10h
27556
                and     ecx, 0FFh
27557
                shr     edi, 18h
27558
                and     edx, 0FFh
27559
                shr     ebp, 18h
27560
                mov     ecx, [esi+ecx*4]
27561
                shr     eax, 10h
27562
                mov     edi, [esi+edi*4]
27563
                shr     ebx, 10h
27564
                mov     edx, [esi+edx*4+400h]
27565
                mov     ebp, [esi+ebp*4+400h]
27566
                xor     ecx, edx
27567
                mov     edx, eax
27568
                xor     edi, ebp
27569
                shr     eax, 8
27570
                mov     ebp, ebx
27571
                and     edx, 0FFh
27572
                and     ebx, 0FFh
27573
                shr     ebp, 8
27574
                mov     eax, [esi+eax*4+800h]
27575
                mov     edx, [esi+edx*4+800h]
27576
                xor     edi, eax
27577
                xor     ecx, edx
27578
                mov     ebx, [esi+ebx*4+0C00h]
27579
                mov     ebp, [esi+ebp*4+0C00h]
27580
                xor     ecx, ebx
27581
                xor     edi, ebp
27582
                mov     eax, [esp+18h]
27583
                mov     ebx, [esp+1Ch]
27584
                xor     ecx, eax
27585
                xor     edi, ebx
27586
                mov     [esp+18h], ecx
27587
                mov     [esp+1Ch], edi
27588
                mov     eax, [esp+10h]
27589
                mov     ecx, [esp+14h]
27590
                mov     ebx, eax
27591
                mov     edx, ecx
27592
                shr     eax, 8
27593
                mov     edi, [esp+18h]
27594
                and     ebx, 0FFh
27595
                mov     ebp, [esp+1Ch]
27596
                shr     ecx, 8
27597
                and     eax, 0FFh
27598
                and     edx, 0FFh
27599
                and     ecx, 0FFh
27600
                mov     ebx, [esi+ebx*4]
27601
                mov     eax, [esi+eax*4]
27602
                mov     edx, [esi+edx*4+400h]
27603
                mov     ecx, [esi+ecx*4+400h]
27604
                xor     ebx, edx
27605
                mov     edx, edi
27606
                shr     edi, 8
27607
                xor     eax, ecx
27608
                mov     ecx, ebp
27609
                and     edx, 0FFh
27610
                shr     ebp, 8
27611
                and     edi, 0FFh
27612
                and     ecx, 0FFh
27613
                mov     edx, [esi+edx*4+800h]
27614
                and     ebp, 0FFh
27615
                mov     edi, [esi+edi*4+800h]
27616
                xor     ebx, edx
27617
                mov     edx, [esp+20h]
27618
                mov     ecx, [esi+ecx*4+0C00h]
27619
                xor     eax, edi
27620
                xor     ebx, ecx
27621
                mov     ecx, [esp+24h]
27622
                xor     ebx, edx
27623
                xor     eax, ecx
27624
                mov     ebp, [esi+ebp*4+0C00h]
27625
                mov     [esp+20h], ebx
27626
                xor     eax, ebp
27627
                mov     [esp+24h], eax
27628
                mov     ecx, [esp+10h]
27629
                mov     edx, [esp+14h]
27630
                mov     edi, ecx
27631
                shr     ecx, 10h
27632
                mov     eax, [esp+18h]
27633
                mov     ebp, edx
27634
                mov     ebx, [esp+1Ch]
27635
                shr     edx, 10h
27636
                and     ecx, 0FFh
27637
                shr     edi, 18h
27638
                and     edx, 0FFh
27639
                shr     ebp, 18h
27640
                mov     ecx, [esi+ecx*4]
27641
                shr     eax, 10h
27642
                mov     edi, [esi+edi*4]
27643
                shr     ebx, 10h
27644
                mov     edx, [esi+edx*4+400h]
27645
                mov     ebp, [esi+ebp*4+400h]
27646
                xor     ecx, edx
27647
                mov     edx, eax
27648
                xor     edi, ebp
27649
                shr     eax, 8
27650
                mov     ebp, ebx
27651
                and     edx, 0FFh
27652
                and     ebx, 0FFh
27653
                shr     ebp, 8
27654
                mov     eax, [esi+eax*4+800h]
27655
                mov     edx, [esi+edx*4+800h]
27656
                xor     edi, eax
27657
                xor     ecx, edx
27658
                mov     ebx, [esi+ebx*4+0C00h]
27659
                mov     ebp, [esi+ebp*4+0C00h]
27660
                xor     ecx, ebx
27661
                xor     edi, ebp
27662
                mov     eax, [esp+28h]
27663
                mov     ebx, [esp+2Ch]
27664
                xor     ecx, eax
27665
                xor     edi, ebx
27666
                mov     [esp+28h], ecx
27667
                mov     [esp+2Ch], edi
27668
                mov     eax, [esp+20h]
27669
                mov     ecx, [esp+24h]
27670
                mov     ebx, eax
27671
                mov     edx, ecx
27672
                shr     eax, 8
27673
                mov     edi, [esp+28h]
27674
                and     ebx, 0FFh
27675
                mov     ebp, [esp+2Ch]
27676
                shr     ecx, 8
27677
                and     eax, 0FFh
27678
                and     edx, 0FFh
27679
                and     ecx, 0FFh
27680
                mov     ebx, [esi+ebx*4]
27681
                mov     eax, [esi+eax*4]
27682
                mov     edx, [esi+edx*4+400h]
27683
                mov     ecx, [esi+ecx*4+400h]
27684
                xor     ebx, edx
27685
                mov     edx, edi
27686
                shr     edi, 8
27687
                xor     eax, ecx
27688
                mov     ecx, ebp
27689
                and     edx, 0FFh
27690
                shr     ebp, 8
27691
                and     edi, 0FFh
27692
                and     ecx, 0FFh
27693
                mov     edx, [esi+edx*4+800h]
27694
                and     ebp, 0FFh
27695
                mov     edi, [esi+edi*4+800h]
27696
                xor     ebx, edx
27697
                mov     edx, [esp+30h]
27698
                mov     ecx, [esi+ecx*4+0C00h]
27699
                xor     eax, edi
27700
                xor     ebx, ecx
27701
                mov     ecx, [esp+34h]
27702
                xor     ebx, edx
27703
                xor     eax, ecx
27704
                mov     ebp, [esi+ebp*4+0C00h]
27705
                mov     [esp+30h], ebx
27706
                xor     eax, ebp
27707
                mov     [esp+34h], eax
27708
                mov     ecx, [esp+20h]
27709
                mov     edx, [esp+24h]
27710
                mov     edi, ecx
27711
                shr     ecx, 10h
27712
                mov     eax, [esp+28h]
27713
                mov     ebp, edx
27714
                mov     ebx, [esp+2Ch]
27715
                shr     edx, 10h
27716
                and     ecx, 0FFh
27717
                shr     edi, 18h
27718
                and     edx, 0FFh
27719
                shr     ebp, 18h
27720
                mov     ecx, [esi+ecx*4]
27721
                shr     eax, 10h
27722
                mov     edi, [esi+edi*4]
27723
                shr     ebx, 10h
27724
                mov     edx, [esi+edx*4+400h]
27725
                mov     ebp, [esi+ebp*4+400h]
27726
                xor     ecx, edx
27727
                mov     edx, eax
27728
                xor     edi, ebp
27729
                shr     eax, 8
27730
                mov     ebp, ebx
27731
                and     edx, 0FFh
27732
                and     ebx, 0FFh
27733
                shr     ebp, 8
27734
                mov     eax, [esi+eax*4+800h]
27735
                mov     edx, [esi+edx*4+800h]
27736
                xor     edi, eax
27737
                xor     ecx, edx
27738
                mov     ebx, [esi+ebx*4+0C00h]
27739
                mov     ebp, [esi+ebp*4+0C00h]
27740
                xor     ecx, ebx
27741
                xor     edi, ebp
27742
                mov     eax, [esp+38h]
27743
                mov     ebx, [esp+3Ch]
27744
                xor     ecx, eax
27745
                xor     edi, ebx
27746
                mov     [esp+38h], ecx
27747
                mov     [esp+3Ch], edi
27748
                mov     eax, [esp+30h]
27749
                mov     ecx, [esp+34h]
27750
                mov     ebx, eax
27751
                mov     edx, ecx
27752
                shr     eax, 8
27753
                mov     edi, [esp+38h]
27754
                and     ebx, 0FFh
27755
                mov     ebp, [esp+3Ch]
27756
                shr     ecx, 8
27757
                and     eax, 0FFh
27758
                and     edx, 0FFh
27759
                and     ecx, 0FFh
27760
                mov     ebx, [esi+ebx*4]
27761
                mov     eax, [esi+eax*4]
27762
                mov     edx, [esi+edx*4+400h]
27763
                mov     ecx, [esi+ecx*4+400h]
27764
                xor     ebx, edx
27765
                mov     edx, edi
27766
                shr     edi, 8
27767
                xor     eax, ecx
27768
                mov     ecx, ebp
27769
                and     edx, 0FFh
27770
                shr     ebp, 8
27771
                and     edi, 0FFh
27772
                and     ecx, 0FFh
27773
                mov     edx, [esi+edx*4+800h]
27774
                and     ebp, 0FFh
27775
                mov     edi, [esi+edi*4+800h]
27776
                xor     ebx, edx
27777
                mov     edx, [esp+40h]
27778
                mov     ecx, [esi+ecx*4+0C00h]
27779
                xor     eax, edi
27780
                xor     ebx, ecx
27781
                mov     ecx, [esp+44h]
27782
                xor     ebx, edx
27783
                xor     eax, ecx
27784
                mov     ebp, [esi+ebp*4+0C00h]
27785
                mov     [esp+40h], ebx
27786
                xor     eax, ebp
27787
                mov     [esp+44h], eax
27788
                mov     ecx, [esp+30h]
27789
                mov     edx, [esp+34h]
27790
                mov     edi, ecx
27791
                shr     ecx, 10h
27792
                mov     eax, [esp+38h]
27793
                mov     ebp, edx
27794
                mov     ebx, [esp+3Ch]
27795
                shr     edx, 10h
27796
                and     ecx, 0FFh
27797
                shr     edi, 18h
27798
                and     edx, 0FFh
27799
                shr     ebp, 18h
27800
                mov     ecx, [esi+ecx*4]
27801
                shr     eax, 10h
27802
                mov     edi, [esi+edi*4]
27803
                shr     ebx, 10h
27804
                mov     edx, [esi+edx*4+400h]
27805
                mov     ebp, [esi+ebp*4+400h]
27806
                xor     ecx, edx
27807
                mov     edx, eax
27808
                xor     edi, ebp
27809
                shr     eax, 8
27810
                mov     ebp, ebx
27811
                and     edx, 0FFh
27812
                and     ebx, 0FFh
27813
                shr     ebp, 8
27814
                mov     eax, [esi+eax*4+800h]
27815
                mov     edx, [esi+edx*4+800h]
27816
                xor     edi, eax
27817
                xor     ecx, edx
27818
                mov     ebx, [esi+ebx*4+0C00h]
27819
                mov     ebp, [esi+ebp*4+0C00h]
27820
                xor     ecx, ebx
27821
                xor     edi, ebp
27822
                mov     eax, [esp+48h]
27823
                mov     ebx, [esp+4Ch]
27824
                xor     ecx, eax
27825
                xor     edi, ebx
27826
                mov     [esp+48h], ecx
27827
                mov     [esp+4Ch], edi
27828
                mov     eax, [esp+40h]
27829
                mov     ecx, [esp+44h]
27830
                mov     ebx, eax
27831
                mov     edx, ecx
27832
                shr     eax, 8
27833
                mov     edi, [esp+48h]
27834
                and     ebx, 0FFh
27835
                mov     ebp, [esp+4Ch]
27836
                shr     ecx, 8
27837
                and     eax, 0FFh
27838
                and     edx, 0FFh
27839
                and     ecx, 0FFh
27840
                mov     ebx, [esi+ebx*4]
27841
                mov     eax, [esi+eax*4]
27842
                mov     edx, [esi+edx*4+400h]
27843
                mov     ecx, [esi+ecx*4+400h]
27844
                xor     ebx, edx
27845
                mov     edx, edi
27846
                shr     edi, 8
27847
                xor     eax, ecx
27848
                mov     ecx, ebp
27849
                and     edx, 0FFh
27850
                shr     ebp, 8
27851
                and     edi, 0FFh
27852
                and     ecx, 0FFh
27853
                mov     edx, [esi+edx*4+800h]
27854
                and     ebp, 0FFh
27855
                mov     edi, [esi+edi*4+800h]
27856
                xor     ebx, edx
27857
                mov     edx, [esp+50h]
27858
                mov     ecx, [esi+ecx*4+0C00h]
27859
                xor     eax, edi
27860
                xor     ebx, ecx
27861
                mov     ecx, [esp+54h]
27862
                xor     ebx, edx
27863
                xor     eax, ecx
27864
                mov     ebp, [esi+ebp*4+0C00h]
27865
                mov     [esp+50h], ebx
27866
                xor     eax, ebp
27867
                mov     [esp+54h], eax
27868
                mov     ecx, [esp+40h]
27869
                mov     edx, [esp+44h]
27870
                mov     edi, ecx
27871
                shr     ecx, 10h
27872
                mov     eax, [esp+48h]
27873
                mov     ebp, edx
27874
                mov     ebx, [esp+4Ch]
27875
                shr     edx, 10h
27876
                and     ecx, 0FFh
27877
                shr     edi, 18h
27878
                and     edx, 0FFh
27879
                shr     ebp, 18h
27880
                mov     ecx, [esi+ecx*4]
27881
                shr     eax, 10h
27882
                mov     edi, [esi+edi*4]
27883
                shr     ebx, 10h
27884
                mov     edx, [esi+edx*4+400h]
27885
                mov     ebp, [esi+ebp*4+400h]
27886
                xor     ecx, edx
27887
                mov     edx, eax
27888
                xor     edi, ebp
27889
                shr     eax, 8
27890
                mov     ebp, ebx
27891
                and     edx, 0FFh
27892
                and     ebx, 0FFh
27893
                shr     ebp, 8
27894
                mov     eax, [esi+eax*4+800h]
27895
                mov     edx, [esi+edx*4+800h]
27896
                xor     edi, eax
27897
                xor     ecx, edx
27898
                mov     ebx, [esi+ebx*4+0C00h]
27899
                mov     ebp, [esi+ebp*4+0C00h]
27900
                xor     ecx, ebx
27901
                xor     edi, ebp
27902
                mov     eax, [esp+58h]
27903
                mov     ebx, [esp+5Ch]
27904
                xor     ecx, eax
27905
                xor     edi, ebx
27906
                mov     [esp+58h], ecx
27907
                mov     [esp+5Ch], edi
27908
                mov     eax, [esp+50h]
27909
                mov     ecx, [esp+54h]
27910
                mov     ebx, eax
27911
                mov     edx, ecx
27912
                shr     eax, 8
27913
                mov     edi, [esp+58h]
27914
                and     ebx, 0FFh
27915
                mov     ebp, [esp+5Ch]
27916
                shr     ecx, 8
27917
                and     eax, 0FFh
27918
                and     edx, 0FFh
27919
                and     ecx, 0FFh
27920
                mov     ebx, [esi+ebx*4]
27921
                mov     eax, [esi+eax*4]
27922
                mov     edx, [esi+edx*4+400h]
27923
                mov     ecx, [esi+ecx*4+400h]
27924
                xor     ebx, edx
27925
                mov     edx, edi
27926
                shr     edi, 8
27927
                xor     eax, ecx
27928
                mov     ecx, ebp
27929
                and     edx, 0FFh
27930
                shr     ebp, 8
27931
                and     edi, 0FFh
27932
                and     ecx, 0FFh
27933
                mov     edx, [esi+edx*4+800h]
27934
                and     ebp, 0FFh
27935
                mov     edi, [esi+edi*4+800h]
27936
                xor     ebx, edx
27937
                mov     edx, [esp+60h]
27938
                mov     ecx, [esi+ecx*4+0C00h]
27939
                xor     eax, edi
27940
                xor     ebx, ecx
27941
                mov     ecx, [esp+64h]
27942
                xor     ebx, edx
27943
                xor     eax, ecx
27944
                mov     ebp, [esi+ebp*4+0C00h]
27945
                mov     [esp+60h], ebx
27946
                xor     eax, ebp
27947
                mov     [esp+64h], eax
27948
                mov     ecx, [esp+50h]
27949
                mov     edx, [esp+54h]
27950
                mov     edi, ecx
27951
                shr     ecx, 10h
27952
                mov     eax, [esp+58h]
27953
                mov     ebp, edx
27954
                mov     ebx, [esp+5Ch]
27955
                shr     edx, 10h
27956
                and     ecx, 0FFh
27957
                shr     edi, 18h
27958
                and     edx, 0FFh
27959
                shr     ebp, 18h
27960
                mov     ecx, [esi+ecx*4]
27961
                shr     eax, 10h
27962
                mov     edi, [esi+edi*4]
27963
                shr     ebx, 10h
27964
                mov     edx, [esi+edx*4+400h]
27965
                mov     ebp, [esi+ebp*4+400h]
27966
                xor     ecx, edx
27967
                mov     edx, eax
27968
                xor     edi, ebp
27969
                shr     eax, 8
27970
                mov     ebp, ebx
27971
                and     edx, 0FFh
27972
                and     ebx, 0FFh
27973
                shr     ebp, 8
27974
                mov     eax, [esi+eax*4+800h]
27975
                mov     edx, [esi+edx*4+800h]
27976
                xor     edi, eax
27977
                xor     ecx, edx
27978
                mov     ebx, [esi+ebx*4+0C00h]
27979
                mov     ebp, [esi+ebp*4+0C00h]
27980
                xor     ecx, ebx
27981
                xor     edi, ebp
27982
                mov     eax, [esp+68h]
27983
                mov     ebx, [esp+6Ch]
27984
                xor     ecx, eax
27985
                xor     edi, ebx
27986
                mov     [esp+68h], ecx
27987
                mov     [esp+6Ch], edi
27988
                mov     eax, [esp+60h]
27989
                mov     ecx, [esp+64h]
27990
                mov     ebx, eax
27991
                mov     edx, ecx
27992
                shr     eax, 8
27993
                mov     edi, [esp+68h]
27994
                and     ebx, 0FFh
27995
                mov     ebp, [esp+6Ch]
27996
                shr     ecx, 8
27997
                and     eax, 0FFh
27998
                and     edx, 0FFh
27999
                and     ecx, 0FFh
28000
                mov     ebx, [esi+ebx*4]
28001
                mov     eax, [esi+eax*4]
28002
                mov     edx, [esi+edx*4+400h]
28003
                mov     ecx, [esi+ecx*4+400h]
28004
                xor     ebx, edx
28005
                mov     edx, edi
28006
                shr     edi, 8
28007
                xor     eax, ecx
28008
                mov     ecx, ebp
28009
                and     edx, 0FFh
28010
                shr     ebp, 8
28011
                and     edi, 0FFh
28012
                and     ecx, 0FFh
28013
                mov     edx, [esi+edx*4+800h]
28014
                and     ebp, 0FFh
28015
                mov     edi, [esi+edi*4+800h]
28016
                xor     ebx, edx
28017
                mov     edx, [esp+70h]
28018
                mov     ecx, [esi+ecx*4+0C00h]
28019
                xor     eax, edi
28020
                xor     ebx, ecx
28021
                mov     ecx, [esp+74h]
28022
                xor     ebx, edx
28023
                xor     eax, ecx
28024
                mov     ebp, [esi+ebp*4+0C00h]
28025
                mov     [esp+70h], ebx
28026
                xor     eax, ebp
28027
                mov     [esp+74h], eax
28028
                mov     ecx, [esp+60h]
28029
                mov     edx, [esp+64h]
28030
                mov     edi, ecx
28031
                shr     ecx, 10h
28032
                mov     eax, [esp+68h]
28033
                mov     ebp, edx
28034
                mov     ebx, [esp+6Ch]
28035
                shr     edx, 10h
28036
                and     ecx, 0FFh
28037
                shr     edi, 18h
28038
                and     edx, 0FFh
28039
                shr     ebp, 18h
28040
                mov     ecx, [esi+ecx*4]
28041
                shr     eax, 10h
28042
                mov     edi, [esi+edi*4]
28043
                shr     ebx, 10h
28044
                mov     edx, [esi+edx*4+400h]
28045
                mov     ebp, [esi+ebp*4+400h]
28046
                xor     ecx, edx
28047
                mov     edx, eax
28048
                xor     edi, ebp
28049
                shr     eax, 8
28050
                mov     ebp, ebx
28051
                and     edx, 0FFh
28052
                and     ebx, 0FFh
28053
                shr     ebp, 8
28054
                mov     eax, [esi+eax*4+800h]
28055
                mov     edx, [esi+edx*4+800h]
28056
                xor     edi, eax
28057
                xor     ecx, edx
28058
                mov     ebx, [esi+ebx*4+0C00h]
28059
                mov     ebp, [esi+ebp*4+0C00h]
28060
                xor     ecx, ebx
28061
                xor     edi, ebp
28062
                mov     eax, [esp+78h]
28063
                mov     ebx, [esp+7Ch]
28064
                xor     ecx, eax
28065
                xor     edi, ebx
28066
                mov     [esp+78h], ecx
28067
                mov     [esp+7Ch], edi
28068
                mov     esi, [esp+0A0h]
28069
                mov     eax, [esp+70h]
28070
                mov     ebx, [esp+74h]
28071
                mov     ecx, eax
28072
                mov     edi, [esp+78h]
28073
                shr     eax, 8
28074
                mov     ebp, [esp+7Ch]
28075
                mov     edx, ebx
28076
                and     ecx, 0FFh
28077
                and     eax, 0FFh
28078
                shr     ebx, 8
28079
                and     edx, 0FFh
28080
                and     ebx, 0FFh
28081
                mov     ecx, [esi+ecx*4]
28082
                mov     edx, [esi+edx*4]
28083
                mov     eax, [esi+eax*4]
28084
                shl     edx, 8
28085
                mov     ebx, [esi+ebx*4]
28086
                shl     ebx, 8
28087
                xor     ecx, edx
28088
                mov     edx, edi
28089
                xor     eax, ebx
28090
                shr     edi, 8
28091
                mov     ebx, ebp
28092
                shr     ebp, 8
28093
                and     edx, 0FFh
28094
                and     edi, 0FFh
28095
                and     ebx, 0FFh
28096
                and     ebp, 0FFh
28097
                mov     edx, [esi+edx*4]
28098
                mov     edi, [esi+edi*4]
28099
                mov     ebx, [esi+ebx*4]
28100
                shl     edx, 10h
28101
                mov     ebp, [esi+ebp*4]
28102
                shl     edi, 10h
28103
                xor     ecx, edx
28104
                shl     ebx, 18h
28105
                xor     eax, edi
28106
                shl     ebp, 18h
28107
                mov     edx, [esp+94h]
28108
                xor     ecx, ebx
28109
                xor     eax, ebp
28110
                mov     ebx, [edx]
28111
                mov     ebp, [edx+4]
28112
                mov     edx, [esp+90h]
28113
                xor     ecx, ebx
28114
                xor     eax, ebp
28115
                mov     ebx, [esp+80h]
28116
                mov     ebp, [esp+84h]
28117
                xor     ecx, ebx
28118
                xor     eax, ebp
28119
                mov     [edx], ecx
28120
                mov     [edx+4], eax
28121
                mov     eax, [esp+70h]
28122
                mov     ebx, [esp+74h]
28123
                mov     ecx, eax
28124
                shr     eax, 10h
28125
                mov     edi, [esp+78h]
28126
                mov     ebp, [esp+7Ch]
28127
                mov     edx, ebx
28128
                shr     ebx, 10h
28129
                and     eax, 0FFh
28130
                shr     ecx, 18h
28131
                and     ebx, 0FFh
28132
                shr     edx, 18h
28133
                mov     eax, [esi+eax*4]
28134
                mov     ebx, [esi+ebx*4]
28135
                mov     ecx, [esi+ecx*4]
28136
                shl     ebx, 8
28137
                mov     edx, [esi+edx*4]
28138
                shl     edx, 8
28139
                xor     eax, ebx
28140
                mov     ebx, edi
28141
                xor     ecx, edx
28142
                shr     edi, 10h
28143
                mov     edx, ebp
28144
                shr     ebp, 10h
28145
                and     edi, 0FFh
28146
                shr     ebx, 18h
28147
                and     ebp, 0FFh
28148
                shr     edx, 18h
28149
                mov     edi, [esi+edi*4]
28150
                mov     ebx, [esi+ebx*4]
28151
                mov     ebp, [esi+ebp*4]
28152
                shl     edi, 10h
28153
                mov     edx, [esi+edx*4]
28154
                shl     ebp, 18h
28155
                xor     eax, edi
28156
                shl     ebx, 10h
28157
                xor     eax, ebp
28158
                shl     edx, 18h
28159
                mov     edi, [esp+94h]
28160
                xor     ecx, ebx
28161
                mov     ebx, [esp+88h]
28162
                xor     ecx, edx
28163
                mov     edx, [esp+8Ch]
28164
                xor     eax, ebx
28165
                mov     ebx, [edi+8]
28166
                mov     edi, [edi+0Ch]
28167
                xor     ecx, edx
28168
                mov     edx, [esp+90h]
28169
                mov     ebp, [esp+0A4h]
28170
                xor     eax, ebx
28171
                mov     esp, ebp
28172
                xor     ecx, edi
28173
                mov     [edx+8], eax
28174
                mov     [edx+0Ch], ecx
28175
                pop  ebp
28176
                pop  edi
28177
                pop  esi
28178
                pop  ebx
28179
end;
28180
{$ENDIF}
28181
28182
{$IFDEF THash_Snefru128_asm}
28183
procedure THash_Snefru128.DoTransform(Buffer: PUInt32Array);
28184
begin
28185
  SwapUInt32Buffer(Buffer[0], FDigest[4], 12);
28186
  asm
28187
                push    ebx
28188
                mov     eax, Self
28189
                push    esi
28190
                push    edi
28191
                lea     edi, [eax].THash_Snefru128.FDigest
28192
                push    ebp
28193
                lea     esi, Snefru_Data
28194
                mov     ecx, [eax].THash_Snefru128.FRounds
28195
28196
                mov     ebp, esp
28197
                add     esp, 0FFFFFF94h
28198
                and     esp, 0FFFFFFE0h
28199
                mov     [esp+60h], edi
28200
                mov     [esp+68h], ebp
28201
                mov     eax, [edi]
28202
                mov     ebx, [edi+4]
28203
                mov     ebp, [edi+8]
28204
                mov     edx, [edi+0Ch]
28205
                mov     [esp], eax
28206
                mov     [esp+4], ebx
28207
                mov     [esp+8], ebp
28208
                mov     [esp+0Ch], edx
28209
                mov     [esp+40h], eax
28210
                mov     [esp+44h], ebx
28211
                mov     [esp+48h], ebp
28212
                mov     [esp+4Ch], edx
28213
                mov     eax, [edi+10h]
28214
                mov     ebx, [edi+14h]
28215
                mov     ebp, [edi+18h]
28216
                mov     edx, [edi+1Ch]
28217
                mov     [esp+10h], eax
28218
                mov     [esp+14h], ebx
28219
                mov     [esp+18h], ebp
28220
                mov     [esp+1Ch], edx
28221
                mov     eax, [edi+20h]
28222
                mov     ebx, [edi+24h]
28223
                mov     ebp, [edi+28h]
28224
                mov     edx, [edi+2Ch]
28225
                mov     [esp+20h], eax
28226
                mov     [esp+24h], ebx
28227
                mov     [esp+28h], ebp
28228
                mov     [esp+2Ch], edx
28229
                mov     eax, [edi+30h]
28230
                mov     ebx, [edi+34h]
28231
                mov     ebp, [edi+38h]
28232
                mov     edx, [edi+3Ch]
28233
                mov     [esp+30h], eax
28234
                mov     [esp+34h], ebx
28235
                mov     [esp+38h], ebp
28236
                mov     [esp+3Ch], edx
28237
28238
            @@_level_loop:
28239
                mov     [esp+64h], ecx
28240
                mov     ebx, [esp]
28241
                mov     ecx, [esp+4]
28242
                mov     edi, ebx
28243
                and     ebx, 0FFh
28244
                mov     eax, [esp+3Ch]
28245
                mov     ebx, [esi+ebx*4]
28246
                mov     edx, [esp+8]
28247
                xor     ecx, ebx
28248
                xor     eax, ebx
28249
                mov     ebp, ecx
28250
                and     ecx, 0FFh
28251
                mov     [esp+3Ch], eax
28252
                mov     ecx, [esi+ecx*4]
28253
                mov     ebx, [esp+0Ch]
28254
                xor     edx, ecx
28255
                xor     edi, ecx
28256
                mov     ecx, edx
28257
                and     edx, 0FFh
28258
                mov     [esp], edi
28259
                mov     edx, [esi+edx*4+400h]
28260
                mov     edi, [esp+10h]
28261
                xor     ebx, edx
28262
                xor     ebp, edx
28263
                mov     edx, ebx
28264
                and     ebx, 0FFh
28265
                ror     ebp, 10h
28266
                mov     ebx, [esi+ebx*4+400h]
28267
                mov     eax, [esp+14h]
28268
                mov     [esp+4], ebp
28269
                xor     edi, ebx
28270
                xor     ecx, ebx
28271
                mov     ebx, edi
28272
                and     edi, 0FFh
28273
                mov     ebp, [esp+18h]
28274
                ror     ecx, 10h
28275
                mov     edi, [esi+edi*4]
28276
                mov     [esp+8], ecx
28277
                xor     eax, edi
28278
                xor     edx, edi
28279
                mov     edi, eax
28280
                and     eax, 0FFh
28281
                ror     edx, 10h
28282
                mov     eax, [esi+eax*4]
28283
                mov     ecx, [esp+1Ch]
28284
                mov     [esp+0Ch], edx
28285
                xor     ebp, eax
28286
                xor     ebx, eax
28287
                mov     eax, ebp
28288
                and     ebp, 0FFh
28289
                mov     edx, [esp+20h]
28290
                ror     ebx, 10h
28291
                mov     ebp, [esi+ebp*4+400h]
28292
                mov     [esp+10h], ebx
28293
                xor     ecx, ebp
28294
                xor     edi, ebp
28295
                mov     ebp, ecx
28296
                and     ecx, 0FFh
28297
                ror     edi, 10h
28298
                mov     ecx, [esi+ecx*4+400h]
28299
                mov     ebx, [esp+24h]
28300
                mov     [esp+14h], edi
28301
                xor     edx, ecx
28302
                xor     eax, ecx
28303
                mov     ecx, edx
28304
                and     edx, 0FFh
28305
                mov     edi, [esp+28h]
28306
                ror     eax, 10h
28307
                mov     edx, [esi+edx*4]
28308
                mov     [esp+18h], eax
28309
                xor     ebx, edx
28310
                xor     ebp, edx
28311
                mov     edx, ebx
28312
                and     ebx, 0FFh
28313
                ror     ebp, 10h
28314
                mov     ebx, [esi+ebx*4]
28315
                mov     eax, [esp+2Ch]
28316
                mov     [esp+1Ch], ebp
28317
                xor     edi, ebx
28318
                xor     ecx, ebx
28319
                mov     ebx, edi
28320
                and     edi, 0FFh
28321
                mov     ebp, [esp+30h]
28322
                ror     ecx, 10h
28323
                mov     edi, [esi+edi*4+400h]
28324
                mov     [esp+20h], ecx
28325
                xor     eax, edi
28326
                xor     edx, edi
28327
                mov     edi, eax
28328
                and     eax, 0FFh
28329
                ror     edx, 10h
28330
                mov     eax, [esi+eax*4+400h]
28331
                mov     ecx, [esp+34h]
28332
                mov     [esp+24h], edx
28333
                xor     ebp, eax
28334
                xor     ebx, eax
28335
                mov     eax, ebp
28336
                and     ebp, 0FFh
28337
                mov     edx, [esp+38h]
28338
                ror     ebx, 10h
28339
                mov     ebp, [esi+ebp*4]
28340
                mov     [esp+28h], ebx
28341
                xor     ecx, ebp
28342
                xor     edi, ebp
28343
                mov     ebp, ecx
28344
                and     ecx, 0FFh
28345
                ror     edi, 10h
28346
                mov     ecx, [esi+ecx*4]
28347
                mov     ebx, [esp+3Ch]
28348
                mov     [esp+2Ch], edi
28349
                xor     edx, ecx
28350
                xor     eax, ecx
28351
                mov     ecx, edx
28352
                and     edx, 0FFh
28353
                mov     edi, [esp]
28354
                ror     eax, 10h
28355
                mov     edx, [esi+edx*4+400h]
28356
                mov     [esp+30h], eax
28357
                xor     ebx, edx
28358
                xor     ebp, edx
28359
                mov     edx, ebx
28360
                and     ebx, 0FFh
28361
                ror     ebp, 10h
28362
                ror     edx, 10h
28363
                mov     ebx, [esi+ebx*4+400h]
28364
                mov     [esp+34h], ebp
28365
                xor     edi, ebx
28366
                xor     ecx, ebx
28367
                ror     edi, 10h
28368
                ror     ecx, 10h
28369
                mov     [esp], edi
28370
                mov     [esp+38h], ecx
28371
                mov     [esp+3Ch], edx
28372
                mov     ebx, [esp]
28373
                mov     ecx, [esp+4]
28374
                mov     edi, ebx
28375
                and     ebx, 0FFh
28376
                mov     eax, [esp+3Ch]
28377
                mov     ebx, [esi+ebx*4]
28378
                mov     edx, [esp+8]
28379
                xor     ecx, ebx
28380
                xor     eax, ebx
28381
                mov     ebp, ecx
28382
                and     ecx, 0FFh
28383
                mov     [esp+3Ch], eax
28384
                mov     ecx, [esi+ecx*4]
28385
                mov     ebx, [esp+0Ch]
28386
                xor     edx, ecx
28387
                xor     edi, ecx
28388
                mov     ecx, edx
28389
                and     edx, 0FFh
28390
                mov     [esp], edi
28391
                mov     edx, [esi+edx*4+400h]
28392
                mov     edi, [esp+10h]
28393
                xor     ebx, edx
28394
                xor     ebp, edx
28395
                mov     edx, ebx
28396
                and     ebx, 0FFh
28397
                ror     ebp, 8
28398
                mov     ebx, [esi+ebx*4+400h]
28399
                mov     eax, [esp+14h]
28400
                mov     [esp+4], ebp
28401
                xor     edi, ebx
28402
                xor     ecx, ebx
28403
                mov     ebx, edi
28404
                and     edi, 0FFh
28405
                mov     ebp, [esp+18h]
28406
                ror     ecx, 8
28407
                mov     edi, [esi+edi*4]
28408
                mov     [esp+8], ecx
28409
                xor     eax, edi
28410
                xor     edx, edi
28411
                mov     edi, eax
28412
                and     eax, 0FFh
28413
                ror     edx, 8
28414
                mov     eax, [esi+eax*4]
28415
                mov     ecx, [esp+1Ch]
28416
                mov     [esp+0Ch], edx
28417
                xor     ebp, eax
28418
                xor     ebx, eax
28419
                mov     eax, ebp
28420
                and     ebp, 0FFh
28421
                mov     edx, [esp+20h]
28422
                ror     ebx, 8
28423
                mov     ebp, [esi+ebp*4+400h]
28424
                mov     [esp+10h], ebx
28425
                xor     ecx, ebp
28426
                xor     edi, ebp
28427
                mov     ebp, ecx
28428
                and     ecx, 0FFh
28429
                ror     edi, 8
28430
                mov     ecx, [esi+ecx*4+400h]
28431
                mov     ebx, [esp+24h]
28432
                mov     [esp+14h], edi
28433
                xor     edx, ecx
28434
                xor     eax, ecx
28435
                mov     ecx, edx
28436
                and     edx, 0FFh
28437
                mov     edi, [esp+28h]
28438
                ror     eax, 8
28439
                mov     edx, [esi+edx*4]
28440
                mov     [esp+18h], eax
28441
                xor     ebx, edx
28442
                xor     ebp, edx
28443
                mov     edx, ebx
28444
                and     ebx, 0FFh
28445
                ror     ebp, 8
28446
                mov     ebx, [esi+ebx*4]
28447
                mov     eax, [esp+2Ch]
28448
                mov     [esp+1Ch], ebp
28449
                xor     edi, ebx
28450
                xor     ecx, ebx
28451
                mov     ebx, edi
28452
                and     edi, 0FFh
28453
                mov     ebp, [esp+30h]
28454
                ror     ecx, 8
28455
                mov     edi, [esi+edi*4+400h]
28456
                mov     [esp+20h], ecx
28457
                xor     eax, edi
28458
                xor     edx, edi
28459
                mov     edi, eax
28460
                and     eax, 0FFh
28461
                ror     edx, 8
28462
                mov     eax, [esi+eax*4+400h]
28463
                mov     ecx, [esp+34h]
28464
                mov     [esp+24h], edx
28465
                xor     ebp, eax
28466
                xor     ebx, eax
28467
                mov     eax, ebp
28468
                and     ebp, 0FFh
28469
                mov     edx, [esp+38h]
28470
                ror     ebx, 8
28471
                mov     ebp, [esi+ebp*4]
28472
                mov     [esp+28h], ebx
28473
                xor     ecx, ebp
28474
                xor     edi, ebp
28475
                mov     ebp, ecx
28476
                and     ecx, 0FFh
28477
                ror     edi, 8
28478
                mov     ecx, [esi+ecx*4]
28479
                mov     ebx, [esp+3Ch]
28480
                mov     [esp+2Ch], edi
28481
                xor     edx, ecx
28482
                xor     eax, ecx
28483
                mov     ecx, edx
28484
                and     edx, 0FFh
28485
                mov     edi, [esp]
28486
                ror     eax, 8
28487
                mov     edx, [esi+edx*4+400h]
28488
                mov     [esp+30h], eax
28489
                xor     ebx, edx
28490
                xor     ebp, edx
28491
                mov     edx, ebx
28492
                and     ebx, 0FFh
28493
                ror     ebp, 8
28494
                ror     edx, 8
28495
                mov     ebx, [esi+ebx*4+400h]
28496
                mov     [esp+34h], ebp
28497
                xor     edi, ebx
28498
                xor     ecx, ebx
28499
                ror     edi, 8
28500
                ror     ecx, 8
28501
                mov     [esp], edi
28502
                mov     [esp+38h], ecx
28503
                mov     [esp+3Ch], edx
28504
                mov     ebx, [esp]
28505
                mov     ecx, [esp+4]
28506
                mov     edi, ebx
28507
                and     ebx, 0FFh
28508
                mov     eax, [esp+3Ch]
28509
                mov     ebx, [esi+ebx*4]
28510
                mov     edx, [esp+8]
28511
                xor     ecx, ebx
28512
                xor     eax, ebx
28513
                mov     ebp, ecx
28514
                and     ecx, 0FFh
28515
                mov     [esp+3Ch], eax
28516
                mov     ecx, [esi+ecx*4]
28517
                mov     ebx, [esp+0Ch]
28518
                xor     edx, ecx
28519
                xor     edi, ecx
28520
                mov     ecx, edx
28521
                and     edx, 0FFh
28522
                mov     [esp], edi
28523
                mov     edx, [esi+edx*4+400h]
28524
                mov     edi, [esp+10h]
28525
                xor     ebx, edx
28526
                xor     ebp, edx
28527
                mov     edx, ebx
28528
                and     ebx, 0FFh
28529
                ror     ebp, 10h
28530
                mov     ebx, [esi+ebx*4+400h]
28531
                mov     eax, [esp+14h]
28532
                mov     [esp+4], ebp
28533
                xor     edi, ebx
28534
                xor     ecx, ebx
28535
                mov     ebx, edi
28536
                and     edi, 0FFh
28537
                mov     ebp, [esp+18h]
28538
                ror     ecx, 10h
28539
                mov     edi, [esi+edi*4]
28540
                mov     [esp+8], ecx
28541
                xor     eax, edi
28542
                xor     edx, edi
28543
                mov     edi, eax
28544
                and     eax, 0FFh
28545
                ror     edx, 10h
28546
                mov     eax, [esi+eax*4]
28547
                mov     ecx, [esp+1Ch]
28548
                mov     [esp+0Ch], edx
28549
                xor     ebp, eax
28550
                xor     ebx, eax
28551
                mov     eax, ebp
28552
                and     ebp, 0FFh
28553
                mov     edx, [esp+20h]
28554
                ror     ebx, 10h
28555
                mov     ebp, [esi+ebp*4+400h]
28556
                mov     [esp+10h], ebx
28557
                xor     ecx, ebp
28558
                xor     edi, ebp
28559
                mov     ebp, ecx
28560
                and     ecx, 0FFh
28561
                ror     edi, 10h
28562
                mov     ecx, [esi+ecx*4+400h]
28563
                mov     ebx, [esp+24h]
28564
                mov     [esp+14h], edi
28565
                xor     edx, ecx
28566
                xor     eax, ecx
28567
                mov     ecx, edx
28568
                and     edx, 0FFh
28569
                mov     edi, [esp+28h]
28570
                ror     eax, 10h
28571
                mov     edx, [esi+edx*4]
28572
                mov     [esp+18h], eax
28573
                xor     ebx, edx
28574
                xor     ebp, edx
28575
                mov     edx, ebx
28576
                and     ebx, 0FFh
28577
                ror     ebp, 10h
28578
                mov     ebx, [esi+ebx*4]
28579
                mov     eax, [esp+2Ch]
28580
                mov     [esp+1Ch], ebp
28581
                xor     edi, ebx
28582
                xor     ecx, ebx
28583
                mov     ebx, edi
28584
                and     edi, 0FFh
28585
                mov     ebp, [esp+30h]
28586
                ror     ecx, 10h
28587
                mov     edi, [esi+edi*4+400h]
28588
                mov     [esp+20h], ecx
28589
                xor     eax, edi
28590
                xor     edx, edi
28591
                mov     edi, eax
28592
                and     eax, 0FFh
28593
                ror     edx, 10h
28594
                mov     eax, [esi+eax*4+400h]
28595
                mov     ecx, [esp+34h]
28596
                mov     [esp+24h], edx
28597
                xor     ebp, eax
28598
                xor     ebx, eax
28599
                mov     eax, ebp
28600
                and     ebp, 0FFh
28601
                mov     edx, [esp+38h]
28602
                ror     ebx, 10h
28603
                mov     ebp, [esi+ebp*4]
28604
                mov     [esp+28h], ebx
28605
                xor     ecx, ebp
28606
                xor     edi, ebp
28607
                mov     ebp, ecx
28608
                and     ecx, 0FFh
28609
                ror     edi, 10h
28610
                mov     ecx, [esi+ecx*4]
28611
                mov     ebx, [esp+3Ch]
28612
                mov     [esp+2Ch], edi
28613
                xor     edx, ecx
28614
                xor     eax, ecx
28615
                mov     ecx, edx
28616
                and     edx, 0FFh
28617
                mov     edi, [esp]
28618
                ror     eax, 10h
28619
                mov     edx, [esi+edx*4+400h]
28620
                mov     [esp+30h], eax
28621
                xor     ebx, edx
28622
                xor     ebp, edx
28623
                mov     edx, ebx
28624
                and     ebx, 0FFh
28625
                ror     ebp, 10h
28626
                ror     edx, 10h
28627
                mov     ebx, [esi+ebx*4+400h]
28628
                mov     [esp+34h], ebp
28629
                xor     edi, ebx
28630
                xor     ecx, ebx
28631
                ror     edi, 10h
28632
                ror     ecx, 10h
28633
                mov     [esp], edi
28634
                mov     [esp+38h], ecx
28635
                mov     [esp+3Ch], edx
28636
                mov     ebx, [esp]
28637
                mov     ecx, [esp+4]
28638
                mov     edi, ebx
28639
                and     ebx, 0FFh
28640
                mov     eax, [esp+3Ch]
28641
                mov     ebx, [esi+ebx*4]
28642
                mov     edx, [esp+8]
28643
                xor     ecx, ebx
28644
                xor     eax, ebx
28645
                mov     ebp, ecx
28646
                and     ecx, 0FFh
28647
                mov     [esp+3Ch], eax
28648
                mov     ecx, [esi+ecx*4]
28649
                mov     ebx, [esp+0Ch]
28650
                xor     edx, ecx
28651
                xor     edi, ecx
28652
                mov     ecx, edx
28653
                and     edx, 0FFh
28654
                mov     [esp], edi
28655
                mov     edx, [esi+edx*4+400h]
28656
                mov     edi, [esp+10h]
28657
                xor     ebx, edx
28658
                xor     ebp, edx
28659
                mov     edx, ebx
28660
                and     ebx, 0FFh
28661
                rol     ebp, 8
28662
                mov     ebx, [esi+ebx*4+400h]
28663
                mov     eax, [esp+14h]
28664
                mov     [esp+4], ebp
28665
                xor     edi, ebx
28666
                xor     ecx, ebx
28667
                mov     ebx, edi
28668
                and     edi, 0FFh
28669
                mov     ebp, [esp+18h]
28670
                rol     ecx, 8
28671
                mov     edi, [esi+edi*4]
28672
                mov     [esp+8], ecx
28673
                xor     eax, edi
28674
                xor     edx, edi
28675
                mov     edi, eax
28676
                and     eax, 0FFh
28677
                rol     edx, 8
28678
                mov     eax, [esi+eax*4]
28679
                mov     ecx, [esp+1Ch]
28680
                mov     [esp+0Ch], edx
28681
                xor     ebp, eax
28682
                xor     ebx, eax
28683
                mov     eax, ebp
28684
                and     ebp, 0FFh
28685
                mov     edx, [esp+20h]
28686
                rol     ebx, 8
28687
                mov     ebp, [esi+ebp*4+400h]
28688
                mov     [esp+10h], ebx
28689
                xor     ecx, ebp
28690
                xor     edi, ebp
28691
                mov     ebp, ecx
28692
                and     ecx, 0FFh
28693
                rol     edi, 8
28694
                mov     ecx, [esi+ecx*4+400h]
28695
                mov     ebx, [esp+24h]
28696
                mov     [esp+14h], edi
28697
                xor     edx, ecx
28698
                xor     eax, ecx
28699
                mov     ecx, edx
28700
                and     edx, 0FFh
28701
                mov     edi, [esp+28h]
28702
                rol     eax, 8
28703
                mov     edx, [esi+edx*4]
28704
                mov     [esp+18h], eax
28705
                xor     ebx, edx
28706
                xor     ebp, edx
28707
                mov     edx, ebx
28708
                and     ebx, 0FFh
28709
                rol     ebp, 8
28710
                mov     ebx, [esi+ebx*4]
28711
                mov     eax, [esp+2Ch]
28712
                mov     [esp+1Ch], ebp
28713
                xor     edi, ebx
28714
                xor     ecx, ebx
28715
                mov     ebx, edi
28716
                and     edi, 0FFh
28717
                mov     ebp, [esp+30h]
28718
                rol     ecx, 8
28719
                mov     edi, [esi+edi*4+400h]
28720
                mov     [esp+20h], ecx
28721
                xor     eax, edi
28722
                xor     edx, edi
28723
                mov     edi, eax
28724
                and     eax, 0FFh
28725
                rol     edx, 8
28726
                mov     eax, [esi+eax*4+400h]
28727
                mov     ecx, [esp+34h]
28728
                mov     [esp+24h], edx
28729
                xor     ebp, eax
28730
                xor     ebx, eax
28731
                mov     eax, ebp
28732
                and     ebp, 0FFh
28733
                mov     edx, [esp+38h]
28734
                rol     ebx, 8
28735
                mov     ebp, [esi+ebp*4]
28736
                mov     [esp+28h], ebx
28737
                xor     ecx, ebp
28738
                xor     edi, ebp
28739
                mov     ebp, ecx
28740
                and     ecx, 0FFh
28741
                rol     edi, 8
28742
                mov     ecx, [esi+ecx*4]
28743
                mov     ebx, [esp+3Ch]
28744
                mov     [esp+2Ch], edi
28745
                xor     edx, ecx
28746
                xor     eax, ecx
28747
                mov     ecx, edx
28748
                and     edx, 0FFh
28749
                mov     edi, [esp]
28750
                rol     eax, 8
28751
                mov     edx, [esi+edx*4+400h]
28752
                mov     [esp+30h], eax
28753
                xor     ebx, edx
28754
                xor     ebp, edx
28755
                mov     edx, ebx
28756
                and     ebx, 0FFh
28757
                rol     ebp, 8
28758
                rol     edx, 8
28759
                mov     ebx, [esi+ebx*4+400h]
28760
                mov     [esp+34h], ebp
28761
                xor     edi, ebx
28762
                xor     ecx, ebx
28763
                rol     edi, 8
28764
                rol     ecx, 8
28765
                mov     [esp], edi
28766
                mov     [esp+38h], ecx
28767
                mov     [esp+3Ch], edx
28768
                mov     ecx, [esp+64h]
28769
                add     esi, 800h
28770
                dec     ecx
28771
                jnz     @@_level_loop
28772
                mov     edi, [esp+60h]
28773
                mov     eax, [esp+40h]
28774
                mov     ebx, [esp+44h]
28775
                mov     ecx, [esp+3Ch]
28776
                mov     edx, [esp+38h]
28777
                xor     eax, ecx
28778
                xor     ebx, edx
28779
                mov     [edi], eax
28780
                mov     [edi+4], ebx
28781
                mov     eax, [esp+48h]
28782
                mov     ebx, [esp+4Ch]
28783
                mov     ecx, [esp+34h]
28784
                mov     edx, [esp+30h]
28785
                xor     eax, ecx
28786
                xor     ebx, edx
28787
                mov     [edi+8], eax
28788
                mov     [edi+0Ch], ebx
28789
                mov     ebp, [esp+68h]
28790
                mov     esp, ebp
28791
28792
                pop  ebp
28793
                pop  edi
28794
                pop  esi
28795
                pop  ebx
28796
  end;
28797
end;
28798
{$ENDIF}
28799
28800
{$IFDEF THash_Snefru256_asm}
28801
procedure THash_Snefru256.DoTransform(Buffer: PUInt32Array);
28802
begin
28803
  SwapUInt32Buffer(Buffer[0], FDigest[8], 8);
28804
  asm
28805
                push    ebx
28806
                mov     eax, Self
28807
                push    esi
28808
                push    edi
28809
                lea     edi, [eax].THash_Snefru256.FDigest
28810
                push    ebp
28811
                lea     esi, Snefru_Data
28812
                mov     ecx, [eax].THash_Snefru256.FRounds
28813
                mov     ebp, esp
28814
                add     esp, 0FFFFFF94h
28815
                and     esp, 0FFFFFFE0h
28816
                mov     [esp+60h], edi
28817
                mov     [esp+68h], ebp
28818
                mov     eax, [edi]
28819
                mov     ebx, [edi+4]
28820
                mov     ebp, [edi+8]
28821
                mov     edx, [edi+0Ch]
28822
                mov     [esp], eax
28823
                mov     [esp+4], ebx
28824
                mov     [esp+8], ebp
28825
                mov     [esp+0Ch], edx
28826
                mov     [esp+40h], eax
28827
                mov     [esp+44h], ebx
28828
                mov     [esp+48h], ebp
28829
                mov     [esp+4Ch], edx
28830
                mov     eax, [edi+10h]
28831
                mov     ebx, [edi+14h]
28832
                mov     ebp, [edi+18h]
28833
                mov     edx, [edi+1Ch]
28834
                mov     [esp+10h], eax
28835
                mov     [esp+14h], ebx
28836
                mov     [esp+18h], ebp
28837
                mov     [esp+1Ch], edx
28838
                mov     [esp+50h], eax
28839
                mov     [esp+54h], ebx
28840
                mov     [esp+58h], ebp
28841
                mov     [esp+5Ch], edx
28842
                mov     eax, [edi+20h]
28843
                mov     ebx, [edi+24h]
28844
                mov     ebp, [edi+28h]
28845
                mov     edx, [edi+2Ch]
28846
                mov     [esp+20h], eax
28847
                mov     [esp+24h], ebx
28848
                mov     [esp+28h], ebp
28849
                mov     [esp+2Ch], edx
28850
                mov     eax, [edi+30h]
28851
                mov     ebx, [edi+34h]
28852
                mov     ebp, [edi+38h]
28853
                mov     edx, [edi+3Ch]
28854
                mov     [esp+30h], eax
28855
                mov     [esp+34h], ebx
28856
                mov     [esp+38h], ebp
28857
                mov     [esp+3Ch], edx
28858
28859
            @@_level_loop:
28860
                mov     [esp+64h], ecx
28861
                mov     ebx, [esp]
28862
                mov     ecx, [esp+4]
28863
                mov     edi, ebx
28864
                and     ebx, 0FFh
28865
                mov     eax, [esp+3Ch]
28866
                mov     ebx, [esi+ebx*4]
28867
                mov     edx, [esp+8]
28868
                xor     ecx, ebx
28869
                xor     eax, ebx
28870
                mov     ebp, ecx
28871
                and     ecx, 0FFh
28872
                mov     [esp+3Ch], eax
28873
                mov     ecx, [esi+ecx*4]
28874
                mov     ebx, [esp+0Ch]
28875
                xor     edx, ecx
28876
                xor     edi, ecx
28877
                mov     ecx, edx
28878
                and     edx, 0FFh
28879
                mov     [esp], edi
28880
                mov     edx, [esi+edx*4+400h]
28881
                mov     edi, [esp+10h]
28882
                xor     ebx, edx
28883
                xor     ebp, edx
28884
                mov     edx, ebx
28885
                and     ebx, 0FFh
28886
                ror     ebp, 10h
28887
                mov     ebx, [esi+ebx*4+400h]
28888
                mov     eax, [esp+14h]
28889
                mov     [esp+4], ebp
28890
                xor     edi, ebx
28891
                xor     ecx, ebx
28892
                mov     ebx, edi
28893
                and     edi, 0FFh
28894
                mov     ebp, [esp+18h]
28895
                ror     ecx, 10h
28896
                mov     edi, [esi+edi*4]
28897
                mov     [esp+8], ecx
28898
                xor     eax, edi
28899
                xor     edx, edi
28900
                mov     edi, eax
28901
                and     eax, 0FFh
28902
                ror     edx, 10h
28903
                mov     eax, [esi+eax*4]
28904
                mov     ecx, [esp+1Ch]
28905
                mov     [esp+0Ch], edx
28906
                xor     ebp, eax
28907
                xor     ebx, eax
28908
                mov     eax, ebp
28909
                and     ebp, 0FFh
28910
                mov     edx, [esp+20h]
28911
                ror     ebx, 10h
28912
                mov     ebp, [esi+ebp*4+400h]
28913
                mov     [esp+10h], ebx
28914
                xor     ecx, ebp
28915
                xor     edi, ebp
28916
                mov     ebp, ecx
28917
                and     ecx, 0FFh
28918
                ror     edi, 10h
28919
                mov     ecx, [esi+ecx*4+400h]
28920
                mov     ebx, [esp+24h]
28921
                mov     [esp+14h], edi
28922
                xor     edx, ecx
28923
                xor     eax, ecx
28924
                mov     ecx, edx
28925
                and     edx, 0FFh
28926
                mov     edi, [esp+28h]
28927
                ror     eax, 10h
28928
                mov     edx, [esi+edx*4]
28929
                mov     [esp+18h], eax
28930
                xor     ebx, edx
28931
                xor     ebp, edx
28932
                mov     edx, ebx
28933
                and     ebx, 0FFh
28934
                ror     ebp, 10h
28935
                mov     ebx, [esi+ebx*4]
28936
                mov     eax, [esp+2Ch]
28937
                mov     [esp+1Ch], ebp
28938
                xor     edi, ebx
28939
                xor     ecx, ebx
28940
                mov     ebx, edi
28941
                and     edi, 0FFh
28942
                mov     ebp, [esp+30h]
28943
                ror     ecx, 10h
28944
                mov     edi, [esi+edi*4+400h]
28945
                mov     [esp+20h], ecx
28946
                xor     eax, edi
28947
                xor     edx, edi
28948
                mov     edi, eax
28949
                and     eax, 0FFh
28950
                ror     edx, 10h
28951
                mov     eax, [esi+eax*4+400h]
28952
                mov     ecx, [esp+34h]
28953
                mov     [esp+24h], edx
28954
                xor     ebp, eax
28955
                xor     ebx, eax
28956
                mov     eax, ebp
28957
                and     ebp, 0FFh
28958
                mov     edx, [esp+38h]
28959
                ror     ebx, 10h
28960
                mov     ebp, [esi+ebp*4]
28961
                mov     [esp+28h], ebx
28962
                xor     ecx, ebp
28963
                xor     edi, ebp
28964
                mov     ebp, ecx
28965
                and     ecx, 0FFh
28966
                ror     edi, 10h
28967
                mov     ecx, [esi+ecx*4]
28968
                mov     ebx, [esp+3Ch]
28969
                mov     [esp+2Ch], edi
28970
                xor     edx, ecx
28971
                xor     eax, ecx
28972
                mov     ecx, edx
28973
                and     edx, 0FFh
28974
                mov     edi, [esp]
28975
                ror     eax, 10h
28976
                mov     edx, [esi+edx*4+400h]
28977
                mov     [esp+30h], eax
28978
                xor     ebx, edx
28979
                xor     ebp, edx
28980
                mov     edx, ebx
28981
                and     ebx, 0FFh
28982
                ror     ebp, 10h
28983
                ror     edx, 10h
28984
                mov     ebx, [esi+ebx*4+400h]
28985
                mov     [esp+34h], ebp
28986
                xor     edi, ebx
28987
                xor     ecx, ebx
28988
                ror     edi, 10h
28989
                ror     ecx, 10h
28990
                mov     [esp], edi
28991
                mov     [esp+38h], ecx
28992
                mov     [esp+3Ch], edx
28993
                mov     ebx, [esp]
28994
                mov     ecx, [esp+4]
28995
                mov     edi, ebx
28996
                and     ebx, 0FFh
28997
                mov     eax, [esp+3Ch]
28998
                mov     ebx, [esi+ebx*4]
28999
                mov     edx, [esp+8]
29000
                xor     ecx, ebx
29001
                xor     eax, ebx
29002
                mov     ebp, ecx
29003
                and     ecx, 0FFh
29004
                mov     [esp+3Ch], eax
29005
                mov     ecx, [esi+ecx*4]
29006
                mov     ebx, [esp+0Ch]
29007
                xor     edx, ecx
29008
                xor     edi, ecx
29009
                mov     ecx, edx
29010
                and     edx, 0FFh
29011
                mov     [esp], edi
29012
                mov     edx, [esi+edx*4+400h]
29013
                mov     edi, [esp+10h]
29014
                xor     ebx, edx
29015
                xor     ebp, edx
29016
                mov     edx, ebx
29017
                and     ebx, 0FFh
29018
                ror     ebp, 8
29019
                mov     ebx, [esi+ebx*4+400h]
29020
                mov     eax, [esp+14h]
29021
                mov     [esp+4], ebp
29022
                xor     edi, ebx
29023
                xor     ecx, ebx
29024
                mov     ebx, edi
29025
                and     edi, 0FFh
29026
                mov     ebp, [esp+18h]
29027
                ror     ecx, 8
29028
                mov     edi, [esi+edi*4]
29029
                mov     [esp+8], ecx
29030
                xor     eax, edi
29031
                xor     edx, edi
29032
                mov     edi, eax
29033
                and     eax, 0FFh
29034
                ror     edx, 8
29035
                mov     eax, [esi+eax*4]
29036
                mov     ecx, [esp+1Ch]
29037
                mov     [esp+0Ch], edx
29038
                xor     ebp, eax
29039
                xor     ebx, eax
29040
                mov     eax, ebp
29041
                and     ebp, 0FFh
29042
                mov     edx, [esp+20h]
29043
                ror     ebx, 8
29044
                mov     ebp, [esi+ebp*4+400h]
29045
                mov     [esp+10h], ebx
29046
                xor     ecx, ebp
29047
                xor     edi, ebp
29048
                mov     ebp, ecx
29049
                and     ecx, 0FFh
29050
                ror     edi, 8
29051
                mov     ecx, [esi+ecx*4+400h]
29052
                mov     ebx, [esp+24h]
29053
                mov     [esp+14h], edi
29054
                xor     edx, ecx
29055
                xor     eax, ecx
29056
                mov     ecx, edx
29057
                and     edx, 0FFh
29058
                mov     edi, [esp+28h]
29059
                ror     eax, 8
29060
                mov     edx, [esi+edx*4]
29061
                mov     [esp+18h], eax
29062
                xor     ebx, edx
29063
                xor     ebp, edx
29064
                mov     edx, ebx
29065
                and     ebx, 0FFh
29066
                ror     ebp, 8
29067
                mov     ebx, [esi+ebx*4]
29068
                mov     eax, [esp+2Ch]
29069
                mov     [esp+1Ch], ebp
29070
                xor     edi, ebx
29071
                xor     ecx, ebx
29072
                mov     ebx, edi
29073
                and     edi, 0FFh
29074
                mov     ebp, [esp+30h]
29075
                ror     ecx, 8
29076
                mov     edi, [esi+edi*4+400h]
29077
                mov     [esp+20h], ecx
29078
                xor     eax, edi
29079
                xor     edx, edi
29080
                mov     edi, eax
29081
                and     eax, 0FFh
29082
                ror     edx, 8
29083
                mov     eax, [esi+eax*4+400h]
29084
                mov     ecx, [esp+34h]
29085
                mov     [esp+24h], edx
29086
                xor     ebp, eax
29087
                xor     ebx, eax
29088
                mov     eax, ebp
29089
                and     ebp, 0FFh
29090
                mov     edx, [esp+38h]
29091
                ror     ebx, 8
29092
                mov     ebp, [esi+ebp*4]
29093
                mov     [esp+28h], ebx
29094
                xor     ecx, ebp
29095
                xor     edi, ebp
29096
                mov     ebp, ecx
29097
                and     ecx, 0FFh
29098
                ror     edi, 8
29099
                mov     ecx, [esi+ecx*4]
29100
                mov     ebx, [esp+3Ch]
29101
                mov     [esp+2Ch], edi
29102
                xor     edx, ecx
29103
                xor     eax, ecx
29104
                mov     ecx, edx
29105
                and     edx, 0FFh
29106
                mov     edi, [esp]
29107
                ror     eax, 8
29108
                mov     edx, [esi+edx*4+400h]
29109
                mov     [esp+30h], eax
29110
                xor     ebx, edx
29111
                xor     ebp, edx
29112
                mov     edx, ebx
29113
                and     ebx, 0FFh
29114
                ror     ebp, 8
29115
                ror     edx, 8
29116
                mov     ebx, [esi+ebx*4+400h]
29117
                mov     [esp+34h], ebp
29118
                xor     edi, ebx
29119
                xor     ecx, ebx
29120
                ror     edi, 8
29121
                ror     ecx, 8
29122
                mov     [esp], edi
29123
                mov     [esp+38h], ecx
29124
                mov     [esp+3Ch], edx
29125
                mov     ebx, [esp]
29126
                mov     ecx, [esp+4]
29127
                mov     edi, ebx
29128
                and     ebx, 0FFh
29129
                mov     eax, [esp+3Ch]
29130
                mov     ebx, [esi+ebx*4]
29131
                mov     edx, [esp+8]
29132
                xor     ecx, ebx
29133
                xor     eax, ebx
29134
                mov     ebp, ecx
29135
                and     ecx, 0FFh
29136
                mov     [esp+3Ch], eax
29137
                mov     ecx, [esi+ecx*4]
29138
                mov     ebx, [esp+0Ch]
29139
                xor     edx, ecx
29140
                xor     edi, ecx
29141
                mov     ecx, edx
29142
                and     edx, 0FFh
29143
                mov     [esp], edi
29144
                mov     edx, [esi+edx*4+400h]
29145
                mov     edi, [esp+10h]
29146
                xor     ebx, edx
29147
                xor     ebp, edx
29148
                mov     edx, ebx
29149
                and     ebx, 0FFh
29150
                ror     ebp, 10h
29151
                mov     ebx, [esi+ebx*4+400h]
29152
                mov     eax, [esp+14h]
29153
                mov     [esp+4], ebp
29154
                xor     edi, ebx
29155
                xor     ecx, ebx
29156
                mov     ebx, edi
29157
                and     edi, 0FFh
29158
                mov     ebp, [esp+18h]
29159
                ror     ecx, 10h
29160
                mov     edi, [esi+edi*4]
29161
                mov     [esp+8], ecx
29162
                xor     eax, edi
29163
                xor     edx, edi
29164
                mov     edi, eax
29165
                and     eax, 0FFh
29166
                ror     edx, 10h
29167
                mov     eax, [esi+eax*4]
29168
                mov     ecx, [esp+1Ch]
29169
                mov     [esp+0Ch], edx
29170
                xor     ebp, eax
29171
                xor     ebx, eax
29172
                mov     eax, ebp
29173
                and     ebp, 0FFh
29174
                mov     edx, [esp+20h]
29175
                ror     ebx, 10h
29176
                mov     ebp, [esi+ebp*4+400h]
29177
                mov     [esp+10h], ebx
29178
                xor     ecx, ebp
29179
                xor     edi, ebp
29180
                mov     ebp, ecx
29181
                and     ecx, 0FFh
29182
                ror     edi, 10h
29183
                mov     ecx, [esi+ecx*4+400h]
29184
                mov     ebx, [esp+24h]
29185
                mov     [esp+14h], edi
29186
                xor     edx, ecx
29187
                xor     eax, ecx
29188
                mov     ecx, edx
29189
                and     edx, 0FFh
29190
                mov     edi, [esp+28h]
29191
                ror     eax, 10h
29192
                mov     edx, [esi+edx*4]
29193
                mov     [esp+18h], eax
29194
                xor     ebx, edx
29195
                xor     ebp, edx
29196
                mov     edx, ebx
29197
                and     ebx, 0FFh
29198
                ror     ebp, 10h
29199
                mov     ebx, [esi+ebx*4]
29200
                mov     eax, [esp+2Ch]
29201
                mov     [esp+1Ch], ebp
29202
                xor     edi, ebx
29203
                xor     ecx, ebx
29204
                mov     ebx, edi
29205
                and     edi, 0FFh
29206
                mov     ebp, [esp+30h]
29207
                ror     ecx, 10h
29208
                mov     edi, [esi+edi*4+400h]
29209
                mov     [esp+20h], ecx
29210
                xor     eax, edi
29211
                xor     edx, edi
29212
                mov     edi, eax
29213
                and     eax, 0FFh
29214
                ror     edx, 10h
29215
                mov     eax, [esi+eax*4+400h]
29216
                mov     ecx, [esp+34h]
29217
                mov     [esp+24h], edx
29218
                xor     ebp, eax
29219
                xor     ebx, eax
29220
                mov     eax, ebp
29221
                and     ebp, 0FFh
29222
                mov     edx, [esp+38h]
29223
                ror     ebx, 10h
29224
                mov     ebp, [esi+ebp*4]
29225
                mov     [esp+28h], ebx
29226
                xor     ecx, ebp
29227
                xor     edi, ebp
29228
                mov     ebp, ecx
29229
                and     ecx, 0FFh
29230
                ror     edi, 10h
29231
                mov     ecx, [esi+ecx*4]
29232
                mov     ebx, [esp+3Ch]
29233
                mov     [esp+2Ch], edi
29234
                xor     edx, ecx
29235
                xor     eax, ecx
29236
                mov     ecx, edx
29237
                and     edx, 0FFh
29238
                mov     edi, [esp]
29239
                ror     eax, 10h
29240
                mov     edx, [esi+edx*4+400h]
29241
                mov     [esp+30h], eax
29242
                xor     ebx, edx
29243
                xor     ebp, edx
29244
                mov     edx, ebx
29245
                and     ebx, 0FFh
29246
                ror     ebp, 10h
29247
                ror     edx, 10h
29248
                mov     ebx, [esi+ebx*4+400h]
29249
                mov     [esp+34h], ebp
29250
                xor     edi, ebx
29251
                xor     ecx, ebx
29252
                ror     edi, 10h
29253
                ror     ecx, 10h
29254
                mov     [esp], edi
29255
                mov     [esp+38h], ecx
29256
                mov     [esp+3Ch], edx
29257
                mov     ebx, [esp]
29258
                mov     ecx, [esp+4]
29259
                mov     edi, ebx
29260
                and     ebx, 0FFh
29261
                mov     eax, [esp+3Ch]
29262
                mov     ebx, [esi+ebx*4]
29263
                mov     edx, [esp+8]
29264
                xor     ecx, ebx
29265
                xor     eax, ebx
29266
                mov     ebp, ecx
29267
                and     ecx, 0FFh
29268
                mov     [esp+3Ch], eax
29269
                mov     ecx, [esi+ecx*4]
29270
                mov     ebx, [esp+0Ch]
29271
                xor     edx, ecx
29272
                xor     edi, ecx
29273
                mov     ecx, edx
29274
                and     edx, 0FFh
29275
                mov     [esp], edi
29276
                mov     edx, [esi+edx*4+400h]
29277
                mov     edi, [esp+10h]
29278
                xor     ebx, edx
29279
                xor     ebp, edx
29280
                mov     edx, ebx
29281
                and     ebx, 0FFh
29282
                rol     ebp, 8
29283
                mov     ebx, [esi+ebx*4+400h]
29284
                mov     eax, [esp+14h]
29285
                mov     [esp+4], ebp
29286
                xor     edi, ebx
29287
                xor     ecx, ebx
29288
                mov     ebx, edi
29289
                and     edi, 0FFh
29290
                mov     ebp, [esp+18h]
29291
                rol     ecx, 8
29292
                mov     edi, [esi+edi*4]
29293
                mov     [esp+8], ecx
29294
                xor     eax, edi
29295
                xor     edx, edi
29296
                mov     edi, eax
29297
                and     eax, 0FFh
29298
                rol     edx, 8
29299
                mov     eax, [esi+eax*4]
29300
                mov     ecx, [esp+1Ch]
29301
                mov     [esp+0Ch], edx
29302
                xor     ebp, eax
29303
                xor     ebx, eax
29304
                mov     eax, ebp
29305
                and     ebp, 0FFh
29306
                mov     edx, [esp+20h]
29307
                rol     ebx, 8
29308
                mov     ebp, [esi+ebp*4+400h]
29309
                mov     [esp+10h], ebx
29310
                xor     ecx, ebp
29311
                xor     edi, ebp
29312
                mov     ebp, ecx
29313
                and     ecx, 0FFh
29314
                rol     edi, 8
29315
                mov     ecx, [esi+ecx*4+400h]
29316
                mov     ebx, [esp+24h]
29317
                mov     [esp+14h], edi
29318
                xor     edx, ecx
29319
                xor     eax, ecx
29320
                mov     ecx, edx
29321
                and     edx, 0FFh
29322
                mov     edi, [esp+28h]
29323
                rol     eax, 8
29324
                mov     edx, [esi+edx*4]
29325
                mov     [esp+18h], eax
29326
                xor     ebx, edx
29327
                xor     ebp, edx
29328
                mov     edx, ebx
29329
                and     ebx, 0FFh
29330
                rol     ebp, 8
29331
                mov     ebx, [esi+ebx*4]
29332
                mov     eax, [esp+2Ch]
29333
                mov     [esp+1Ch], ebp
29334
                xor     edi, ebx
29335
                xor     ecx, ebx
29336
                mov     ebx, edi
29337
                and     edi, 0FFh
29338
                mov     ebp, [esp+30h]
29339
                rol     ecx, 8
29340
                mov     edi, [esi+edi*4+400h]
29341
                mov     [esp+20h], ecx
29342
                xor     eax, edi
29343
                xor     edx, edi
29344
                mov     edi, eax
29345
                and     eax, 0FFh
29346
                rol     edx, 8
29347
                mov     eax, [esi+eax*4+400h]
29348
                mov     ecx, [esp+34h]
29349
                mov     [esp+24h], edx
29350
                xor     ebp, eax
29351
                xor     ebx, eax
29352
                mov     eax, ebp
29353
                and     ebp, 0FFh
29354
                mov     edx, [esp+38h]
29355
                rol     ebx, 8
29356
                mov     ebp, [esi+ebp*4]
29357
                mov     [esp+28h], ebx
29358
                xor     ecx, ebp
29359
                xor     edi, ebp
29360
                mov     ebp, ecx
29361
                and     ecx, 0FFh
29362
                rol     edi, 8
29363
                mov     ecx, [esi+ecx*4]
29364
                mov     ebx, [esp+3Ch]
29365
                mov     [esp+2Ch], edi
29366
                xor     edx, ecx
29367
                xor     eax, ecx
29368
                mov     ecx, edx
29369
                and     edx, 0FFh
29370
                mov     edi, [esp]
29371
                rol     eax, 8
29372
                mov     edx, [esi+edx*4+400h]
29373
                mov     [esp+30h], eax
29374
                xor     ebx, edx
29375
                xor     ebp, edx
29376
                mov     edx, ebx
29377
                and     ebx, 0FFh
29378
                rol     ebp, 8
29379
                rol     edx, 8
29380
                mov     ebx, [esi+ebx*4+400h]
29381
                mov     [esp+34h], ebp
29382
                xor     edi, ebx
29383
                xor     ecx, ebx
29384
                rol     edi, 8
29385
                rol     ecx, 8
29386
                mov     [esp], edi
29387
                mov     [esp+38h], ecx
29388
                mov     [esp+3Ch], edx
29389
                mov     ecx, [esp+64h]
29390
                add     esi, 800h
29391
                dec     ecx
29392
                jnz     @@_level_loop
29393
                mov     edi, [esp+60h]
29394
                mov     eax, [esp+40h]
29395
                mov     ebx, [esp+44h]
29396
                mov     ecx, [esp+3Ch]
29397
                mov     edx, [esp+38h]
29398
                xor     eax, ecx
29399
                xor     ebx, edx
29400
                mov     [edi], eax
29401
                mov     [edi+4], ebx
29402
                mov     eax, [esp+48h]
29403
                mov     ebx, [esp+4Ch]
29404
                mov     ecx, [esp+34h]
29405
                mov     edx, [esp+30h]
29406
                xor     eax, ecx
29407
                xor     ebx, edx
29408
                mov     [edi+8], eax
29409
                mov     [edi+0Ch], ebx
29410
                mov     eax, [esp+50h]
29411
                mov     ebx, [esp+54h]
29412
                mov     ecx, [esp+2Ch]
29413
                mov     edx, [esp+28h]
29414
                xor     eax, ecx
29415
                xor     ebx, edx
29416
                mov     [edi+10h], eax
29417
                mov     [edi+14h], ebx
29418
                mov     eax, [esp+58h]
29419
                mov     ebx, [esp+5Ch]
29420
                mov     ecx, [esp+24h]
29421
                mov     edx, [esp+20h]
29422
                xor     eax, ecx
29423
                xor     ebx, edx
29424
                mov     [edi+18h], eax
29425
                mov     [edi+1Ch], ebx
29426
                mov     ebp, [esp+68h]
29427
                mov     esp, ebp
29428
                pop  ebp
29429
                pop  edi
29430
                pop  esi
29431
                pop  ebx
29432
  end;
29433
end;
29434
{$ENDIF}
29435
29436
{$IFDEF THash_Sapphire_asm}
29437
procedure THash_Sapphire.Calc(const Data; DataSize: Integer);
29438
asm
29439
                test    ecx,ecx
29440
                jle     @Exit
29441
29442
                push    ebx
29443
                push    esi
29444
                push    edi              // let edi points to Sapphire partial context (w/o cards array)
29445
                lea     esi,[eax].THash_Sapphire.FCards
29446
                lea     edi,[eax].THash_Sapphire.FRotor // let esi points to Sapphire cards array
29447
                push    ebp              // edx points to data, ecx contains DataSize
29448
29449
                mov     ebp, esp
29450
                sub     esp, 18h
29451
                and     esp, 0FFFFFFE0h
29452
                mov     eax, [edi]
29453
                mov     ebx, [edi+4]
29454
                mov     [esp+14h], ebp
29455
                mov     ebp, [edi+8]
29456
                mov     [esp], ebx
29457
                mov     [esp+4], ebp
29458
                mov     ebp, eax
29459
                mov     eax, [edi+0Ch]
29460
                mov     ebx, [edi+10h]
29461
                mov     [esp+8], edx
29462
                mov     [esp+10h], edi
29463
29464
            @@data_loop:
29465
                mov     [esp+0Ch], ecx
29466
                mov     ecx, [esi+ebp*4]
29467
                mov     edi, [esp]
29468
                inc     ebp
29469
                add     edi, ecx
29470
                mov     ecx, [esi+ebx*4]
29471
                and     edi, 0FFh
29472
                and     ebp, 0FFh
29473
                mov     edx, [esi+edi*4]
29474
                mov     [esp], edi
29475
                mov     [esi+ebx*4], edx
29476
                mov     edx, [esi+eax*4]
29477
                mov     [esi+edi*4], edx
29478
                mov     edx, [esi+ebp*4]
29479
                mov     [esi+eax*4], edx
29480
                mov     [esi+ebp*4], ecx
29481
                mov     ecx, [esi+ecx*4]
29482
                mov     edx, [esi+eax*4]
29483
                mov     eax, [esp+4]
29484
                mov     edi, [esi+edi*4]
29485
                add     ecx, eax
29486
                mov     eax, [esi+ebp*4]
29487
                and     ecx, 0FFh
29488
                add     edi, eax
29489
                mov     [esp+4], ecx
29490
                and     edi, 0FFh
29491
                mov     eax, [esi+ecx*4]
29492
                mov     ecx, [esp+8]
29493
                add     edx, eax
29494
                mov     eax, [esi+ebx*4]
29495
                add     edx, eax
29496
                movzx   eax, byte ptr [ecx]
29497
                and     edx, 0FFh
29498
                mov     edi, [esi+edi*4]
29499
                inc     ecx
29500
                mov     ebx, eax
29501
                mov     edx, [esi+edx*4]
29502
                mov     [esp+8], ecx
29503
                xor     ebx, edi
29504
                mov     edx, [esi+edx*4]
29505
                mov     ecx, [esp+0Ch]
29506
                xor     ebx, edx
29507
                dec     ecx
29508
                jnz     @@data_loop
29509
                mov     edi, [esp+10h]
29510
                mov     ecx, [esp]
29511
                mov     esi, [esp+4]
29512
                mov     edx, [esp+14h]
29513
                mov     [edi], ebp
29514
                mov     [edi+4], ecx
29515
                mov     esp, edx
29516
                mov     [edi+8], esi
29517
                mov     [edi+0Ch], eax
29518
                mov     [edi+10h], ebx
29519
                pop     ebp
29520
                pop     edi
29521
                pop     esi
29522
                pop     ebx
29523
29524
            @Exit:
29525
end;
29526
{$ENDIF}
29527
29528
{$ENDIF INCLUDED}
29529